1.Hotpots analysis
1.1Hot functions
1.2Hot loops
格式说明:
执行百分比:热点循环占本函数执行比例(热点循环占程序执行比例)
Explanation of Format:
Execution time percentage:Percentage of Execution time in current function(Percentage of Execution time in current program)
Total:91.7%
Function 1:primal_bea_mpp
pb.L1.1
Execution time percentage:99.0%(40.72%)
Function 2: refresh_potential
rp.L1.1
Execution time percentage:99.2%(30.05%)
Function 3: price_out_impl
po.L1.1
Execution time percentage:70%(5.87%)
Function 4:update_tree
ut.L1
Execution time percentage:90%(7.02%)
Function 5: replace_weaker_arc
re.L1
Execution time percentage:99%(4.82%)
Function 6: primal_iminus
pi.L1
Execution time percentage:99% (函数调用)
Function 7: sort_basket 76.4%(1.13%)
sb.L1.1
Execution time percentage:15.5%
sb.L1.2
Execution time percentage:24.6%
sb.L1
Execution time percentage:36.3%
Function 8: write_circulations
wc.L1.1.1.1
Execution time percentage:100%(0.86%)
Function 9: insert_new_arc
ina.L1
Execution time percentage: 50%(0.27%)
Function 10: flow_cost
fc.L1
Execution time percentage:64.4% (0.26%)
Function 11: dual_feasible
df.L1
Execution time percentage:99% (0.35%)
Function 12: suspend_impl
si.L1
Execution time percentage:99% (0.25%)
Function 13: primal_net_simplex
pns.L1
Execution time percentage:90% (函数调用)
Function 14: refresh_neighbour_lists
rnl.L1
Execution time percentage:98% (0.1%)
1.3 Hot code phase
/* Function 1 primal_bea_mpp */
// pb.L1
for( ; arc < stop_arcs; arc += nr_group )
{
if( arc->ident > BASIC )
{
red_cost = arc->cost - arc->tail->potential + arc->head->potential;
if( bea_is_dual_infeasible( arc, red_cost ) )
{
basket_size++;
perm[basket_size]->a = arc;
perm[basket_size]->cost = red_cost;
perm[basket_size]->abs_cost = ABS(red_cost);
}
}
}
/* Function 2 refresh_potential */
// rp.L1
while( node != root )
{
while( node )
{
if( node->orientation == UP )
node->potential = node->basic_arc->cost + node->pred->potential;
else /* == DOWN */
{
node->potential = node->pred->potential - node->basic_arc->cost;
checksum++;
}
}
/* Function 3 price_out_impl */
// po.L1
for( ; i < trips; i++, arcout += 3 )
{
while( arcin )
{
tail = arcin->tail;
if( tail->time + arcin->org_cost > latest )
{
arcin