added debug information for performance measurements

master
Sokomine 2014-09-22 05:43:21 +02:00
parent f991862f8b
commit 0cf61c0955
1 changed files with 27 additions and 0 deletions

View File

@ -618,9 +618,16 @@ mg_villages.village_area_fill_with_plants = function( village_area, villages, mi
end
time_elapsed = function( t_last, msg )
t_now = minetest.get_us_time();
print( 'TIME ELAPSED: '..tostring( t_now - t_last )..' '..msg );
return t_now;
end
mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm, data, param2_data, a, top )
local t1 = minetest.get_us_time();
local cid = {}
cid.c_air = minetest.get_content_id( 'air' );
cid.c_ignore = minetest.get_content_id( 'ignore' );
@ -658,6 +665,7 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
cid.c_ethereal_clay_orange = minetest.get_content_id( 'bakedclay:orange' );
end
t1 = time_elapsed( t1, 'defines' );
--[[
local centered_here = 0;
for _,village in ipairs( villages ) do
@ -683,9 +691,12 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
for village_nr, village in ipairs(villages) do
-- generate the village structure: determine positions of buildings and roads
mg_villages.generate_village( village, village_noise);
t1 = time_elapsed( t1, 'generate_village' );
mg_villages.village_area_mark_buildings( village_area, village_nr, village.to_add_data.bpos );
t1 = time_elapsed( t1, 'mark_buildings' );
mg_villages.village_area_mark_dirt_roads( village_area, village_nr, village.to_add_data.dirt_roads );
t1 = time_elapsed( t1, 'mark_dirt_roads' );
end
-- if no voxelmanip data was passed on, read the data here
@ -703,6 +714,7 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
data = vm:get_data()
param2_data = vm:get_param2_data()
end
t1 = time_elapsed( t1, 'get_vmap_data' );
-- all vm manipulation functions write their content to the *entire* volume/area - including those 16 nodes that
-- extend into neighbouring mapchunks; thus, cavegen griefing and mudflow can be repaired by placing everythiing again
@ -714,9 +726,11 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
tmax = maxp;
end
mg_villages.village_area_mark_inside_village_area( village_area, villages, village_noise, tmin, tmax );
t1 = time_elapsed( t1, 'mark_inside_village_area' );
-- determine optimal height for all villages that have their center in this mapchunk; sets village.optimal_height
mg_villages.village_area_get_height( village_area, villages, tmin, tmax, data, param2_data, a, cid );
t1 = time_elapsed( t1, 'get_height' );
-- change height of those villages where an optimal_height could be determined
local village_data_updated = false;
for _,village in ipairs(villages) do
@ -725,10 +739,13 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
village_data_updated = true;
end
end
t1 = time_elapsed( t1, 'change_height' );
mg_villages.flatten_village_area( villages, village_noise, minp, maxp, vm, data, param2_data, a, village_area, cid );
t1 = time_elapsed( t1, 'flatten_village_area' );
-- repair cavegen griefings and mudflow which may have happened in the outer shell (which is part of other mapnodes)
mg_villages.repair_outer_shell( villages, village_noise, tmin, tmax, vm, data, param2_data, a, village_area, cid );
t1 = time_elapsed( t1, 'repair_outer_shell' );
local c_feldweg = minetest.get_content_id('cottages:feldweg');
if( not( c_feldweg )) then
@ -738,21 +755,27 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
for _, village in ipairs(villages) do
village.to_add_data = mg_villages.place_buildings( village, tmin, tmax, data, param2_data, a, village_noise);
t1 = time_elapsed( t1, 'place_buildings' );
mg_villages.place_dirt_roads( village, tmin, tmax, data, param2_data, a, village_noise, c_feldweg);
t1 = time_elapsed( t1, 'place_dirt_roads' );
end
mg_villages.village_area_fill_with_plants( village_area, villages, tmin, tmax, data, param2_data, a, cid );
t1 = time_elapsed( t1, 'fill_with_plants' );
vm:set_data(data)
vm:set_param2_data(param2_data)
t1 = time_elapsed( t1, 'vm data set' );
vm:calc_lighting(
{x=minp.x-16, y=minp.y, z=minp.z-16},
{x=maxp.x+16, y=maxp.y, z=maxp.z+16}
)
t1 = time_elapsed( t1, 'vm calc lighting' );
vm:write_to_map(data)
t1 = time_elapsed( t1, 'vm data written' );
-- initialize the pseudo random generator so that the chests will be filled in a reproducable pattern
local pr = PseudoRandom(mg_villages.get_bseed(minp));
@ -786,9 +809,11 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
end
end
end
t1 = time_elapsed( t1, 'metadata..' );
-- now add those buildings which are .mts files and need to be placed by minetest.place_schematic(...)
mg_villages.place_schematics( village.to_add_data.bpos, village.to_add_data.replacements, a, pr );
t1 = time_elapsed( t1, 'place_schematics' );
if( not( mg_villages.all_villages )) then
mg_villages.all_villages = {};
@ -814,6 +839,8 @@ mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm,
if( village_data_updated ) then
save_restore.save_data( 'mg_all_villages.data', mg_villages.all_villages );
end
t1 = time_elapsed( t1, 'save village data' );
end