Skip to main content

Posts

Showing posts from November, 2008

my personal profiling guide

This is suited for functional programming. Blind optimizations: just say NO. 1. Write some unit tests that ensure your code stays correct. 2. DO NOT ASSUME ANY KNOWLEDGE ON WHAT SHOULD BE OPTIMIZED- but try to "see" possible bottlenecks. 3. Write a the smallest possible program that uses the code to optimize, such that the program exhibits the functionality that seems to be the bottleneck(s). Design this program to run for a few seconds without user interaction. 4. Use a decent profiler to profile a complete run of this program 5. Optimize the bad code in this order - estimate the complexity of the code around hotspots - try diffrent data structures and algorithms - try to involve background knowledge - try to combine several functions into one - records should fit into the cache of the target platform - add more strictness(dangerous) - move common subexpressions or constant subexpressions to a higher scope(generalisation of precalcu