digitalmars.D - CTFE-PGO ... Because I was bored
- Stefan Koch (12/12) Dec 13 2016 Hi Guys,
- Stefan Koch (4/16) Dec 13 2016 https://github.com/UplinkCoder/dmd/compare/newCTFE...newCTFE-PGO
- Era Scarecrow (3/10) Dec 13 2016 Aside from just counting the results, is this going to possibly
- Stefan Koch (8/11) Dec 14 2016 Well Yes.
Hi Guys, Implementing and TESTING function-call support is boring so ... I have just written a little piece of code that counts which switch-cases are executed most frequently versus how often their conditions are evaluated. This can essentially be the basis for pgo based on the ctfe-function path. Since functions are supposed to be the same at ctfe and at runtime, you basically get profiling information for free while compiling. Cheers, Stefan
Dec 13 2016
On Wednesday, 14 December 2016 at 05:07:17 UTC, Stefan Koch wrote:Hi Guys, Implementing and TESTING function-call support is boring so ... I have just written a little piece of code that counts which switch-cases are executed most frequently versus how often their conditions are evaluated. This can essentially be the basis for pgo based on the ctfe-function path. Since functions are supposed to be the same at ctfe and at runtime, you basically get profiling information for free while compiling. Cheers, Stefanhttps://github.com/UplinkCoder/dmd/compare/newCTFE...newCTFE-PGO This is the code that was necessary to add execution counters. I'd say it does speak for the soundness of the design :)
Dec 13 2016
On Wednesday, 14 December 2016 at 05:07:17 UTC, Stefan Koch wrote:I have just written a little piece of code that counts which switch-cases are executed most frequently versus how often their conditions are evaluated. This can essentially be the basis for pgo based on the ctfe-function path. Since functions are supposed to be the same at ctfe and at runtime, you basically get profiling information for free while compiling.Aside from just counting the results, is this going to possibly affect compilation/code generation to get speed/size optimization?
Dec 13 2016
On Wednesday, 14 December 2016 at 06:00:08 UTC, Era Scarecrow wrote:Aside from just counting the results, is this going to possibly affect compilation/code generation to get speed/size optimization?Well Yes. That is the plan at least :) CTFE could stream it's branch-counts directly into the optimizer. I am not in the position to say how tricky it would be to provide this information to the backend, but I guess it will take a bit of fiddling.
Dec 14 2016