Skip to content

Instantly share code, notes, and snippets.

@Jeija
Forked from PilzAdam/gist:4597327
Created January 22, 2013 19:37
Show Gist options
  • Select an option

  • Save Jeija/4597693 to your computer and use it in GitHub Desktop.

Select an option

Save Jeija/4597693 to your computer and use it in GitHub Desktop.
time_setnodes = 0
time_setnode = 0
AMOUNT = 0
function benchmark_setnodes(minp, maxp)
local t1 = os.time()
local nodes = {}
for x=minp.x,maxp.x do
for y=minp.y,maxp.y do
for z=minp.z,maxp.z do
table.insert(nodes, {pos = {x = x, y = y, z = z}, node = {name = "default:stone"}})
end
end
end
minetest.env:set_nodes(nodes)
local t2 = os.time()
return t2-t1
end
function benchmark_setnode(minp, maxp)
local t2 = os.time()
for x=minp.x,maxp.x do
for y=minp.y,maxp.y do
for z=minp.z,maxp.z do
minetest.env:set_node({x=x, y=y, z=z}, {name="default:wood"})
end
end
end
local t3 = os.time()
return t3-t2
end
minetest.register_craftitem("test:test", {
description = "Testcraftitem",
inventory_image = "default_lava.png",
on_use = function(itemstack, dropper, pointed_thing)
AMOUNT = AMOUNT + 1
if pointed_thing.type ~= "node" then
return
end
local pos = pointed_thing.under
local minp = {x=pos.x-50, y=pos.y+2, z=pos.z-50}
local maxp = {x=pos.x+50, y=pos.y+12, z=pos.z+50}
if math.random(1, 2) == 1 then
thistime_setnodes = benchmark_setnodes(minp, maxp)
thistime_setnode = benchmark_setnode(minp, maxp)
else
thistime_setnode = benchmark_setnode(minp, maxp)
thistime_setnodes = benchmark_setnodes(minp, maxp)
end
print("Diesmal: set_nodes(): "..thistime_setnodes.."; set_node(): "..thistime_setnode)
time_setnodes = time_setnodes * ((AMOUNT-1)/AMOUNT) + thistime_setnodes * (1/AMOUNT)
time_setnode = time_setnode * ((AMOUNT-1)/AMOUNT) + thistime_setnode * (1/AMOUNT)
print("Durchschnitt: set_nodes(): "..time_setnodes.."; set_node(): "..time_setnode)
end,
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment