2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-22 01:57:43 +00:00

Update CompilerImprovements

John Johansen 2021-01-28 11:15:11 +00:00
parent abb4db522e
commit c602a77fc3

@ -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