I'm trying to find the bottleneck in my code - the function that consumes most of the time. But I don't understand how to interpret the `nimprof` report as it seems like it has duplicate entries.
In its default settings `nimprof` report included std and system functions, I altered it a little bit, excluding Nim std and system functions (I filter out the stack trace, excluding system functions). It kinda works, but produces strange results containing the duplicates, I was using code example from [Nim in Action, Profiling your code](https://nim-lang.org/blog/2017/10/02/documenting-profiling-and-debugging-nim-code.html#profiling-your-code) The code [playground](https://repl.it/@alexeypetrushin/profiling#main.nim): import strutils, custom_nimprof proc ab() = echo("Found letter") proc num() = echo("Found number") proc diff() = echo("Found something else") proc analyse(x: string) = var i = 0 while i < x.len: case x[i] of Letters: ab() of {'0' .. '9'}: num() else: diff() i.inc for i in 0 .. 10000: analyse("uyguhijkmnbdv44354gasuygiuiolknchyqudsayd12635uha") Run It produces the following result (with excluded nim core functions): writing profile_results.txt... total executions of each stack trace: Entry: 1/5 Calls: 67/125 = 53.60% [sum: 67; 67/125 = 53.60%] /main.nim: analyse 125/125 = 100.00% /main.nim: main 125/125 = 100.00% Entry: 2/5 Calls: 38/125 = 30.40% [sum: 105; 105/125 = 84.00%] /main.nim: ab 50/125 = 40.00% /main.nim: analyse 125/125 = 100.00% /main.nim: main 125/125 = 100.00% Entry: 3/5 Calls: 12/125 = 9.60% [sum: 117; 117/125 = 93.60%] /main.nim: ab 50/125 = 40.00% /main.nim: analyse 125/125 = 100.00% /main.nim: main 125/125 = 100.00% Entry: 4/5 Calls: 5/125 = 4.00% [sum: 122; 122/125 = 97.60%] /main.nim: num 8/125 = 6.40% /main.nim: analyse 125/125 = 100.00% /main.nim: main 125/125 = 100.00% Entry: 5/5 Calls: 3/125 = 2.40% [sum: 125; 125/125 = 100.00%] /main.nim: num 8/125 = 6.40% /main.nim: analyse 125/125 = 100.00% /main.nim: main 125/125 = 100.00% Run You may notice that the call stack in entries 2/5 and 3/5 is the same. Why? Aren't they supposed to be grouped together?
