Make compilation faster :rocket:
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Refactoring
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- cpp, wasm
- Ambito
- compilers, performance
Direzione di ricerca
L’issue fornisce misurazioni dei tempi con -O3 e conteggi di malloc per pass che includono once-reduction, precompute-propagate, dae, heap2local, inlining e vacuum, ma non nomina file né test. Inizia riproducendo le misurazioni sull’output j2cl da 50MB e profilando quei pass; il lavoro è completato quando si ottiene una riduzione documentata e misurabile del tempo di compilazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I did some investigation on the speed of compilation. This is getting important because of things like j2cl output which is a 50MB real-world file.
Slowest passes: (in -O3; note that some passes run more than once)
[PassRunner] running pass: precompute-propagate... 14.23460 seconds.
[PassRunner] running pass: dae... 10.91160 seconds.
[PassRunner] running pass: heap2local... 10.44350 seconds.
[PassRunner] running pass: precompute-propagate... 9.07261 seconds.
[PassRunner] running pass: inlining... 8.02837 seconds.
[PassRunner] running pass: once-reduction... 8.02484 seconds.
[PassRunner] running pass: vacuum... 5.16162 seconds.
[PassRunner] running pass: vacuum... 3.64088 seconds.
[PassRunner] running pass: vacuum... 3.58191 seconds.
[PassRunner] running pass: vacuum... 3.61897 seconds.
perf reports almost 15% of time is spent in malloc/free methods - quite a lot. I counted how many mallocs (note: not the size of them) are done in each pass, here are the heaviest (note: timings here include the overhead of counting mallocs atomically among threads, so those matter less):
once-reduction... 9.51466 seconds. 141558196 mallocs.
precompute-propagate... 14.7426 seconds. 61611533 mallocs.
dae... 11.3789 seconds. 53792948 mallocs.
precompute-propagate... 9.69919 seconds. 39531493 mallocs.
heap2local... 10.5116 seconds. 38582302 mallocs.
local-cse... 4.70765 seconds. 33454468 mallocs.
cfp... 2.43619 seconds. 32292682 mallocs.
ssa-nomerge... 4.92099 seconds. 26378117 mallocs.
simplify-locals-nostructure... 6.03281 seconds. 22663794 mallocs.
vacuum... 5.10813 seconds. 23880789 mallocs.
inlining... 107.781 seconds. 20940365 mallocs.
dce... 3.84722 seconds. 20025273 mallocs.
local-subtyping... 3.44374 seconds. 19067529 mallocs.
and vacuum runs 3 more times:
vacuum... 3.71648 seconds. 16648663 mallocs.
vacuum... 3.86917 seconds. 16302767 mallocs.
vacuum... 3.89855 seconds. 16162915 mallocs.
Help in speeding things up would be very welcome!
- Lingua principale
- WebAssembly
- Stelle
- 8.6k
- Fork
- 885
- Merge medio
- 2g 4h
- PR unite (30g)
- 77
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di WebAssembly/binaryen
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
WebAssembly/binaryen#9135 · 1 commento ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 76/100
WebAssembly/binaryen#9018 · 3 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
WebAssembly/binaryen#9133 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
WebAssembly/binaryen#9123 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
WebAssembly/binaryen#9122 ·
Tutte le issue di WebAssembly/binaryen
Issue simili
-
flang:fir-hlfir
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
llvm/llvm-project#225935 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
objectionary/eo#8923 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Apertacoarray
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100