Make compilation faster :rocket:
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp, wasm
- Lĩnh vực
- compilers, performance
Hướng nghiên cứu
Issue cung cấp số liệu thời gian với -O3 và số lần gọi malloc cho các pass gồm once-reduction, precompute-propagate, dae, heap2local, inlining và vacuum, nhưng không nêu tên tệp hay test nào. Hãy bắt đầu bằng việc tái hiện các phép đo trên output j2cl 50MB và profiling các pass đó; được xem là hoàn thành khi có mức giảm thời gian biên dịch được ghi lại và đo lường được.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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!
- Ngôn ngữ chính
- WebAssembly
- Star
- 8.6k
- Fork
- 885
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 77
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của WebAssembly/binaryen
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
WebAssembly/binaryen#9135 · 1 bình luận ·
-
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 76/100
WebAssembly/binaryen#9018 · 3 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
WebAssembly/binaryen#9133 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
WebAssembly/binaryen#9123 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
WebAssembly/binaryen#9122 ·
Tất cả issue của WebAssembly/binaryen
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
bradcypert/plum#58 ·
-
flang:fir-hlfir
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
llvm/llvm-project#225935 ·
-
Hand Tail: Brass Herald Đang mởarea:cards hand-tail ready-for-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
fil-donadoni/tolaria#4446 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
objectionary/eo#8923 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100