diff --git a/CompilerImprovements.md b/CompilerImprovements.md index 98e0df4..6249d9e 100644 --- a/CompilerImprovements.md +++ b/CompilerImprovements.md @@ -3,6 +3,10 @@ performance over each release. # Areas for improvement +1. flags to make toggling between memory and speed optimizations easier + - ```-O fast``` + - ```-O mem```??? + 1. lexer - Front end duplicate include elimination - per block cache which files have already been included so they don't need to be processed multiple times @@ -48,22 +52,22 @@ performance over each release. - change to sliding window algorithm, to reduce set of slot comparisons done - Note: diff compression also reduces the number of slot comparisons being done by reducing the number of transition - -1. parallel compile - - compile individual profiles in parallel - separating the compile at the profile level should be fairly easy - - requires removal of global state - - compile profile components in parallel (see partial compiles) - - once partial compiles are in place it should be easy to compile these components separately - - pipeline profile construction. - - It is questionable whether a fine grained threading is worth while as the locking overhead is probably rather high but the different stages of the dfa constructions could be pipelined. - - tree optimization -> DFA construction -> minimization -> diff-encode -> comb compression - - since each stage is separate but dependent, separate threads could work on a given thread - 1. partial compiles - shared/precompiled - share and potentially cache partial compile components - includes are a natural boundary to precompile - Requires dfa set operations +1. threaded parallel compile + - requires removal of global state + - shared file caches + - compile profile components in parallel (see partial compiles) + - once partial compiles are in place it should be easy to compile these components separately + - pipeline profile construction. + - different stages of the dfa constructions could be pipelined. + - tree optimization -> DFA construction -> minimization -> diff-encode -> comb compression + - since each stage is separate but dependent, separate threads could work on a given thread + + I #Improvements per Release