I'm running a C++ program (HPCG benchmark) on an ARM processor based board (Juno) with 64-bit Fedora 21 OS.
When I run perf top in another terminal to find which functions are taking more CPU time, I get an output like below.

75.84 xhpcg [.] ComputeSYMGS_ref
22.27% xhpcg [.] ComputeSPMV_ref
1.14% xhpcg [.] ComputeWAXPBY_ref
0.40% xhpcg [.] ComputeDotProduct_ref
0.12% xhpcg [.] ComputeRestriction_ref
0.11% xhpcg [.] ComputeProlongation_ref
0.08% xhpcg [.] ComputeDotProduct_ref

The function ComputeDotProduct_ref is printed twice, once on line 4 and again on line 7 (last line).
I thoroughly checked source code and found that there is no function overloading for this function and it's defined only once.
Then why "perf top" is showing the same function twice instead of just once ?

Thank you.

Assuming perf top is single threaded, then it has to go through the process table linearly, and it may have then found that ComputeDotProduct_ref had reduced its CPU load in the interim, hence listing it again. These tools aren't "exact science", but are for general monitoring purposes. IE, the results will change significantly (usually) from run to run.