For those of you working on large programs performance is a critical issue. This is especially true with the database folks who write DB precompiler code like pro*C.
Well good news is that you can do what is called as 'compiler based FBO' (compiler based feedback optimization). The concept large and need to be discussed in specific details of the situation present.
Generally speaking here is how it works...
[1]: Compile your program with symbol tables
[2]: Run the instrumentor
[3]: Test your program. This will generate a data file for the program performance. Rule of the thumb is bigger the data file better the performance. Keep in mind though this is linear and not vertical.
[4]: Recompile your program with symbol tables using the performance data file. This will tell the compiler to generate better and faster code by looking at the performance problem area earlier collected in the FBO file [3].
[5] Strip off the symbol table and check the program performance with the pervious versions. Theoritacally speaking it is possible to extract 'n' time linear performance factor from perviously unoptimized programs. On already optimized programs law of "diminishing marginal returns" applies. That is to say that the performance gain you get is would be less evertime you increase an optimization factor. [heeee bloody economists are right here]. In my experience I've seen upto 35% gains in
performances coupled with other variables. Compilers that I know of, can do optimization: Sun Solaris, HP-UX, DEC, SCO, AIX and IRIX. Using 'gcc' or gnu compiler is not advised for performance optimizations. It does very poorly. And is not recomended. Native compilers and tools have better understanding of exec image being optimized and what to look for. Although you may find some tools from universities and research organizations which are better than native tools. But again
they are not commericial products and their algorithims are still under development [though some are really good]
Well good news is that you can do what is called as 'compiler based FBO' (compiler based feedback optimization). The concept large and need to be discussed in specific details of the situation present.
Generally speaking here is how it works...
[1]: Compile your program with symbol tables
[2]: Run the instrumentor
[3]: Test your program. This will generate a data file for the program performance. Rule of the thumb is bigger the data file better the performance. Keep in mind though this is linear and not vertical.
[4]: Recompile your program with symbol tables using the performance data file. This will tell the compiler to generate better and faster code by looking at the performance problem area earlier collected in the FBO file [3].
[5] Strip off the symbol table and check the program performance with the pervious versions. Theoritacally speaking it is possible to extract 'n' time linear performance factor from perviously unoptimized programs. On already optimized programs law of "diminishing marginal returns" applies. That is to say that the performance gain you get is would be less evertime you increase an optimization factor. [heeee bloody economists are right here]. In my experience I've seen upto 35% gains in
performances coupled with other variables. Compilers that I know of, can do optimization: Sun Solaris, HP-UX, DEC, SCO, AIX and IRIX. Using 'gcc' or gnu compiler is not advised for performance optimizations. It does very poorly. And is not recomended. Native compilers and tools have better understanding of exec image being optimized and what to look for. Although you may find some tools from universities and research organizations which are better than native tools. But again
they are not commericial products and their algorithims are still under development [though some are really good]
Comments (0)
Post a Comment