minetest.get_us_time
Jump to navigation
Jump to search
Syntax
minetest.get_us_time()
Description
Returns time with microsecond precision. This does not seem to be strictly related to game time or time of day in a meaningful way, but should be useful for taking differences in time measured during a single execution of the server. For example, it can be useful for profiling mod performance.
According to the benchmark test (see below) it works about twice as fast as os.clock.
Examples
local t0_us = minetest.get_us_time();
-- ...
local t1_us = minetest.get_us_time();
local elapsed_time_in_seconds = (t1_us - t0_us)/1000000.0;
to get time differences, minetest.get_us_time seems to works faster than os.clock:
[…]
local oclock = os.clock
local ustime = minetest.get_us_time
local function test_os_clock()
local t1 = oclock()
local delay = tonumber(oclock() - t1)
end
local function test_get_us_time()
local t1 = ustime()
local delay = (ustime() - t1) / 1000000
end
local function apply_timer_tests()
local oclock_count = benchmark_function(test_os_clock)
local ustime_count = benchmark_function(test_get_us_time)
print("test_os_clock: " .. oclock_count .. " s⁻¹")
print("test_get_us_time: " .. ustime_count .. " s⁻¹")
print("minetest.get_us_time is " .. ustime_count / oclock_count .. " times as fast as os.clock")
end
apply_timer_tests()
minetest.register_node(":mo:timtest", {
on_place = apply_timer_tests
})
--[[ results:
Using minetest.get_us_time for measuring (see the benchmark function):
executing when loading:
test_os_clock: 1019720 s⁻¹
test_get_us_time: 1843077.3333333 s⁻¹
minetest.get_us_time is 1.8074347206423 times as fast as os.clock
placing the node:
test_os_clock: 742641.66666667 s⁻¹
test_get_us_time: 1772569.6666667 s⁻¹
minetest.get_us_time is 2.3868438120673 times as fast as os.clock
test_os_clock: 824095 s⁻¹
test_get_us_time: 1790176.6666667 s⁻¹
minetest.get_us_time is 2.1722940518589 times as fast as os.clock
test_os_clock: 736386.33333333 s⁻¹
test_get_us_time: 1769226.6666667 s⁻¹
minetest.get_us_time is 2.4025794431275 times as fast as os.clock
Using os.clock for measuring:
executing when loading:
test_os_clock: 801913.66666667 s⁻¹
test_get_us_time: 1229572.3333333 s⁻¹
minetest.get_us_time is 1.5332976409347 times as fast as os.clock
placing the node:
test_os_clock: 326955 s⁻¹
test_get_us_time: 642647.66666667 s⁻¹
minetest.get_us_time is 1.9655538733669 times as fast as os.clock
test_os_clock: 475252 s⁻¹
test_get_us_time: 844550.33333333 s⁻¹
minetest.get_us_time is 1.7770579257601 times as fast as os.clock
test_os_clock: 296636 s⁻¹
test_get_us_time: 574708.33333333 s⁻¹
minetest.get_us_time is 1.9374193736881 times as fast as os.clock
]]
benchmark_function from Lua_Optimization_Tips#Benchmarking