I just spent the last two hours improving my preprocessors code profiling abilities. Each function now has its own HTML file, for now it only contains fastest and slowest function calls, but this will probably change soon.
Why am I doing this? The answer is Juno. My preprocessor has already identified four separate functions that took way too much CPU time than they should have, and they are fixed now. I want to continue to optomise it, but to do that I need better tools.
The future of this profiler is not as a part of my preprocsesor, it is as a separate DLL, callable from any language that supports DLL calling. It is simply too messy including it in the preprocessor. It may well be a good time to invest in a copy of PureBasic. The downside? Such a solution will probably either not be free or not be released.
But for now, the preprocessors profiler will have to do. An update will be out whenever I get around to it, along with some other misc features. I actually believe I released version 5.0 prematurely before, but these are the added features:
/* Changes Since 5.0
* Fixed a #Macro bug [I now clear out the conditional stack, what a mistake!]
* Fixed a #Define bug
* Added Enum
* Fixed a bug where double spaces between Function and the Function Name will interfere with profiling
* #ProfileNoFunctions
* #ProfileSection [Section]
* #EndProfileSection
* #Clamp Variable, Low, High
* Profiling now includes a separate HTML page per function.
*
* ProfileSections don't do any funky stack based things and so they have to be placed without overlap in terms of source position
*/
I'm off to optomise Juno!
Why am I doing this? The answer is Juno. My preprocessor has already identified four separate functions that took way too much CPU time than they should have, and they are fixed now. I want to continue to optomise it, but to do that I need better tools.
The future of this profiler is not as a part of my preprocsesor, it is as a separate DLL, callable from any language that supports DLL calling. It is simply too messy including it in the preprocessor. It may well be a good time to invest in a copy of PureBasic. The downside? Such a solution will probably either not be free or not be released.
But for now, the preprocessors profiler will have to do. An update will be out whenever I get around to it, along with some other misc features. I actually believe I released version 5.0 prematurely before, but these are the added features:
/* Changes Since 5.0
* Fixed a #Macro bug [I now clear out the conditional stack, what a mistake!]
* Fixed a #Define bug
* Added Enum
* Fixed a bug where double spaces between Function and the Function Name will interfere with profiling
* #ProfileNoFunctions
* #ProfileSection [Section]
* #EndProfileSection
* #Clamp Variable, Low, High
* Profiling now includes a separate HTML page per function.
*
* ProfileSections don't do any funky stack based things and so they have to be placed without overlap in terms of source position
*/
I'm off to optomise Juno!