you should probably start out by using opengl instead of the software renderer - it is swamping your profile. Then, you should sort by “self”, not by “all” or “time”. That is the information which function takes the most time, not how much time is spend inside a function in total.
Also, I think you are using a debug build (due to the many seconds spend in unique_ptr<> delete). For profiling you want to have an optimized (but non-stripped) build. Cheers, Holger On 11.09.2014, at 06:22, Tibor Bamhor <[email protected]> wrote: > So I opted for gprof and bellow are the results. They are from 3 hours-long > game (AI only) on Crater map (red player was eliminated by blue one). You can > look at it, what is interested for me is that DefaultAI (line 43) - the main > AI function - takes only 6.3 % of total CPU if gprof is correct. > > If somebody want raw data (txt file) let me know. > > I believe that proportion of functions changes with size of map. > > ==================== Call graph () ==================== > [see second column - % time] > > > index_%_time____self__children____called_____name > > [1]_____99.4____0.00_1696.26_________________main_[1] > [2]_____99.4____0.01_1696.18_______1_________WLApplication::run()_[2] > [3]_____99.0____0.03_1689.50______10_________UI::Panel::run()_[3] > [4]_____89.4____0.00_1525.92_______1_________WLApplication::mainmenu()_[4] > [5]_____71.7___14.77_1208.34__123188+10361143_<cycle_3_as_a_whole>_[5] > [6]_____69.6____0.00_1187.91_______1_________WLApplication::mainmenu_multiplayer()_[6] > [7]_____53.6____0.02__914.58___61226_________GameRendererSDL::draw()_<cycle_3>_[7] > [8]_____53.6____2.27__912.31___61226_________GameRendererSDL::draw_terrain()_[8] > [9]_____52.5____0.64__894.67_63185232________GameRendererSDL::draw_field()_[9] > [10]____52.3____1.87__891.10_63185232________void_draw_field_int<unsigned_int>()_[10] > [11]____39.9____0.00__680.96_______1_________NetHost::run()_[11] > [12]____31.2___16.13__515.46_126370464_______void_render_triangle<unsigned_int>()_[12] > [13]____30.2__407.08__107.54_126370464_______void_render_edge_lists<unsigned_int>()_[13] > [14]____29.3__114.19__385.34_271118424_______std::unique_ptr<Widelands::Field_[],_std::default_delete<Widelands::Field_[]>_ > [15]____27.3____0.04__465.86___61569+2233150_UI::Panel::do_think()_[15] > [16]____27.2____0.03__463.78___61226_________Interactive_Base::think()_[16] > [17]____27.2____0.05__463.44___61226_________Widelands::Game::think()_[17] > [18]____22.6__101.56__283.78_271118424_______ZSt3getILj0EJPN9Widelands5FieldESt14default_deleteIA_S1_EEENSt11__add_c_refIN > [19]____20.8____0.68__353.99___61226_________Widelands::Cmd_Queue::run_queue()_[19] > [20]____19.9____0.25__339.93_5582271_________Widelands::Cmd_Act::execute()_[20] > [21]____19.9____4.48__334.90_17335297+131869067_<cycle_8_as_a_whole>_[21] > [22]____19.8____0.00__338.65_______1_________Fullscreen_Menu_LaunchMPG::Fullscreen_Menu_LaunchMPG()_[22] > [23]____19.8____0.00__337.97_______1_________Fullscreen_Menu_LaunchMPG::change_map_or_save()_[23] > [24]____19.7____0.20__336.18_4731494_________Widelands::Bob::act()_[24] > [25]____19.7____0.49__335.58_4618069_________Widelands::Bob::do_act()_[25] > [26]____19.6__334.54____0.00_896797820_______SDLSurface::get_pixels()_const_[26] > [27]____19.3____4.02__325.94__638674_________void_Widelands::Map::find_reachable<Widelands::FindImmovablesCallback>()_<cycle_ > [28]____16.6__103.91__179.87_271118424_______std::__add_c_ref<Widelands::Field*>::type_std::__get_helper<0u,_Widelands::Fie > [29]____15.2____2.26__256.88_564713957_______Widelands::Map::get_neighbour()_const_[29] > [30]____12.4___13.32__198.39___61226_________GameRenderer::draw_objects()_<cycle_3>_[30] > [31]____12.0____0.54__203.58__213382_________Widelands::Map::findpath()_[31] > [32]____11.1____0.03__189.65__197613_________Widelands::Bob::start_task_movepath()__[32] > [33]____10.5__101.56___78.31_271118424_______ZNSt11_Tuple_implILj0EJPN9Widelands5FieldESt14default_deleteIA_S1_EEE7_M_head > [34]____10.0____0.00__171.01_______1_________Widelands::Game::run()_[34] > [35]_____9.9____0.00__169.01_______1_________Fullscreen_Menu_LaunchMPG::select_map()_[35] > [36]_____8.5___11.77__132.94_17897783________void_render_road_vert<unsigned_int>()_[36] > [37]_____8.2____0.03__140.70__279850_________Widelands::Critter::roam_update()_[37] > [38]_____8.0____0.02__135.69__199605_________Widelands::Worker::program_update()_[38] > [39]_____6.7____9.60__104.72_7781675_________void_render_road_horiz<unsigned_int>()_[39] > [40]_____6.6____0.00__111.96___14488_________Widelands::Map::find_reachable_fields()_[40] > [41]_____6.6____0.30__111.67___14488_________void_Widelands::Map::find_reachable<Widelands::FindNodesCallback>()_[41] > [42]_____6.3____0.07__106.93___61424_________NetHost::think()_[42] > [43]_____6.3____0.01__106.74__122452_________DefaultAI::think()_[43] > > > > > __index______A_unique_number_given_to_each_element_of_the_table. > ____________Index_numbers_are_sorted_numerically. > ____________The_index_number_is_printed_next_to_every_function_name_so > ____________it_is_easier_to_look_up_where_the_function_in_the_table. > > %_time______This_is_the_percentage_of_the_`total'_time_that_was_spent > ____________in_this_function_and_its_children.__Note_that_due_to > ____________different_viewpoints,_functions_excluded_by_options,_etc, > ____________these_numbers_will_NOT_add_up_to_100%. > > ___self______This_is_the_total_amount_of_time_spent_in_this_function. > > children______This_is_the_total_amount_of_time_propagated_into_this > ____________function_by_its_children. > > _called______This_is_the_number_of_times_the_function_was_called. > ____________If_the_function_called_itself_recursively,_the_number > ____________only_includes_non-recursive_calls,_and_is_followed_by > ____________a_`+'_and_the_number_of_recursive_calls. > > __name_____The_name_of_the_current_function.__The_index_number_is > ____________printed_after_it.__If_the_function_is_a_member_of_a > ____________cycle,_the_cycle_number_is_printed_between_the > ____________function's_name_and_the_index_number. > > > ================ top functions sorted by "self" column ============== > > > [13]____30.2__407.08__107.54_126370464_________void_render_edge_lists<unsigned_int>()_[13] > [26]____19.6__334.54____0.00_896797820_________SDLSurface::get_pixels()_const_[26] > [14]____29.3__114.19__385.34_271118424_________std::unique_ptr<Widelands::Field_[],_std::default_delete<Widelands::Field_[]>_ > [28]____16.6__103.91__179.87_271118424_________std::__add_c_ref<Widelands::Field*>::type_std::__get_helper<0u,_Widelands::Fie > [33]____10.5__101.56___78.31_271118424_________ZNSt11_Tuple_implILj0EJPN9Widelands5FieldESt14default_deleteIA_S1_EEE7_M_head > [18]____22.6__101.56__283.78_271118424_________ZSt3getILj0EJPN9Widelands5FieldESt14default_deleteIA_S1_EEENSt11__add_c_refIN > [45]_____4.6___78.31____0.00_271118424_________std::_Head_base<0u,_Widelands::Field*,_false>::_M_head()_[45] > > > > ---------- Forwarded message ---------- > From: Tibor Bamhor <[email protected]> > Date: 2014-09-10 15:45 GMT+02:00 > Subject: Re: [Widelands-dev] performance question > To: Holger Rapp <[email protected]> > Cc: [email protected] > > > any volunteer? :) > > It would be ideal if profiling could be done within some late interval, I > mean skipping like first 2 hours and then profile for 10 minutes. > > But from my random testing of backtrace (stopping of the game in random > time), it seems that "cmd_queue" is taking quite a long of time during game > near-freezes. > > Perhaps it relates to number of bobs or non-player objects. > > I googled for some fiendly profiler, but it is not that simple... > > 2014-09-10 15:35 GMT+02:00 Holger Rapp <[email protected]>: > > On 10.09.2014, at 00:50, Tibor Bamhor <[email protected]> wrote: > > > Hi, > > > > when working on AI I look on performance as well. > > > > I also encountered game sudden slow-downs when fps drops below 1 or so. > > Using printfs I found that in such situation AI is not called for few > > seconds at all. So it seems it is not a culprit. > > > > But my question is about other observation - the game with big map 512x512 > > - PAUSED and fps still shows ~13 fps - instead of expected 25.0. No > > movement on screen of course. So what can the game be doing so cpu > > intensive when paused? > > No one can tell without profiling. You need to profile. > > > > > > Regards > > _______________________________________________ > > Mailing list: https://launchpad.net/~widelands-dev > > Post to : [email protected] > > Unsubscribe : https://launchpad.net/~widelands-dev > > More help : https://help.launchpad.net/ListHelp > > > > _______________________________________________ > Mailing list: https://launchpad.net/~widelands-dev > Post to : [email protected] > Unsubscribe : https://launchpad.net/~widelands-dev > More help : https://help.launchpad.net/ListHelp
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : [email protected] Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp

