mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-08-22 10:07:12 +00:00
Update CompilerImprovements
parent
abb4db522e
commit
c602a77fc3
@ -3,6 +3,10 @@ performance over each release.
|
|||||||
|
|
||||||
# Areas for improvement
|
# 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
|
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
|
- 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
|
- 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
|
- 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
|
1. partial compiles - shared/precompiled
|
||||||
- share and potentially cache partial compile components
|
- share and potentially cache partial compile components
|
||||||
- includes are a natural boundary to precompile
|
- includes are a natural boundary to precompile
|
||||||
- Requires dfa set operations
|
- 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
|
I
|
||||||
#Improvements per Release
|
#Improvements per Release
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user