digitalmars.D - Partial function profiling feature
- bearophile (47/47) Oct 12 2010 While optimizing D code I have found the built-in dmd profiler very usef...
While optimizing D code I have found the built-in dmd profiler very useful. It gives experimental data about where the code may need improvements, you need much less guessing. In some situations I find that a function that takes lot of the running time is shaped like this, it contains two different big loops: void foo(int n) { // pre-stuff foreach (i; 0 .. n) { ... } // middle-stuff foreach (i; 0 .. n) { ... } // post-stuff } In this situation often it's only one of the two loops that uses most of the running time of the foo() function. I may guess, but I'd like the profiler to give me more data. So sometimes I split the foo() into something like: void foo1(int n) { foreach (i; 0 .. n) { ... } } void foo2(int n) { foreach (i; 0 .. n) { ... } } void foo(int n) { // pre-stuff foo1(n); // middle-stuff foo2(n); // post-stuff } This allows me to profile how much time the two parts of foo() take. In this situation in D code I'd like like a profiling "breakpoint": void foo(int n) { // pre-stuff foreach (i; 0 .. n) { ... } profile_point(); // *** // middle-stuff foreach (i; 0 .. n) { ... } // post-stuff } So the profiling gives me the foo timings split in two (or more) parts. Is this a possible feature? Bye, bearophile
Oct 12 2010