On Fri, May 08, 2015 at 10:36:28PM -0700, Walter Bright via Digitalmars-d wrote: > On 5/8/2015 10:09 PM, H. S. Teoh via Digitalmars-d wrote: > >The built-in dmd profiler is unfortunately unusable for me because > >its function call counters wrap around far too early (IIRC they use > >16-bit counters or something like that), > > 32 bit counters > > https://github.com/D-Programming-Language/druntime/blob/master/src/rt/trace.d#L38 > > >whereas the test cases I need to > >optimize for are the long-running, steady state test cases in which > >millions or billions of function calls are made. > > > >Will this ever be improved? > > if (bugzilla report submitted || developers are mind readers) > { > maybe it'll get fixed! > } > else > { > nobody knows there's a problem > } > > Feel free to submit a PR to make 'count' a ulong.
https://issues.dlang.org/show_bug.cgi?id=14565 I also just realized that on Posix the profiling code apparently relies on the rdtsc instruction, which counts CPU cycles in a 64-bit counter -- given the high frequencies of modern CPUs, moderately long-running CPU-intensive processes easily overflow this counter, leading to wrapped-around timing values and completely garbled output. gprof, for all of its flaws, does not suffer from this problem. T -- Curiosity kills the cat. Moral: don't be the cat.