I've recently discovered weird behaviour of EV-loop timers.
First in Tarantool, and now in Perl libev.
Subj:
When asking EV-loop to sleep for 1ms, it does 1.2ms when requesting to sleep for 2ms, it does 2.4ms,
func partition(nums1 []int, nums2 []int) (int, int) { | |
n1 := len(nums1) | |
n2 := len(nums2) | |
half := (n1+n2) >> 1 | |
// n1 ≤ n2 => n1 ≤ half=(n1+n2)>>1 ≤ n2 | |
// i want to have left part ≤ right part | |
// now, I split nums1 and nums2 in a way such as: | |
// [0;m1)+[m1;n1+1) and [0;m2)+[m2;n2+1) |
func listenUnix(socket_path string) (*net.UnixListener, error) { | |
addr, err := net.ResolveUnixAddr("unix", socket_path) | |
if err != nil { | |
return nil, err | |
} | |
fi, err := os.Lstat(socket_path) | |
switch { | |
case os.IsNotExist(err): | |
return net.ListenUnix("unix", addr) |
local setmetatable, type, pairs, rawget = setmetatable, type, pairs, rawget | |
local copy do | |
pcall(require, 'table.new') | |
local table_new = rawget(table, 'new') or function(_, _) return {} end | |
function copy(t) | |
local new_t = table_new(0, 8) | |
for k, v in pairs(t) do new_t[k] = v end | |
return new_t |
use strict; | |
use warnings; | |
use feature 'say'; | |
use Module::CoreList; | |
use Pod::Simple::SimpleTree; | |
use List::Util qw(first); | |
# 1 - only standard level modules | |
# 2 - mostly all packages | |
# 3 - subpackages of packages |
#!/usr/bin/env tarantool | |
local json = require('json') | |
local cluster_config = require('internal.config.cluster_config') | |
local scalars = {} | |
scalars.string = { | |
jsonschema = { | |
type = 'string', |
use std::collections::HashMap; | |
use serde::{Deserialize, Serialize}; | |
use tarantool::{self, session, tuple::Encode}; | |
use mlua::Lua; | |
#[tarantool::proc] | |
fn add(left: i64, right: i64) -> i64 { | |
left + right | |
} |
-- Tarantool 3.0.2-0-gf9e82c5 Darwin-arm64-RelWithDebInfo | |
local fiber = require 'fiber' | |
local clock = require 'clock' | |
local log = require 'log' | |
box.cfg{checkpoint_count = 1,listen=3301} | |
box.ctl.promote() | |
require 'jit'.on() | |
fiber.top_enable() |
--[[ | |
cpu limit is like leaking bucket. | |
we say that we want to limit this iterator to consume ≤10% cpu. | |
Caller: | |
- ev(), real() | |
- gen_x(param_x, state_x) | |
- ev(), real() |
local fiber = require 'fiber' | |
local clock = require 'clock' | |
local fun = require 'fun' | |
require 'jit'.on() | |
fiber.top_enable() | |
local COLLECT_INTERVAL = 1 | |
fiber.create(function() | |
fiber.name("monitor") |