[PATCH] D50300: [WIP!][Dominators] Collect DomTree construction/update statistics and timing data
Chijun Sima via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 5 02:44:21 PDT 2018
NutshellySima created this revision.
NutshellySima added a reviewer: kuhar.
Herald added subscribers: llvm-commits, dexonsmith, mehdi_amini.
> Note: This is a work-in-progress patch and I don't intent to commit it.
This patch can work with https://reviews.llvm.org/D36884 to provide a better view to devs who concern about the performance of DomTree updating and construction.
This patch measures the performance of DomTree updating by counting via Statistics the number of no-ops/invalid updates removed, the number of lazy updates applied, the number of recalculation requested via the DomTreeUpdater interface.
This patch also provide timing data through the `Timer` and `TimerGroup` class in the LLVM codebase. I put the Timer of DominatorTree in the `DomTreeUpdater.cpp` because the Timer needs to be static and can only be initialized once so it cannot be in a header file. The unittests failed by this patch is because of some part of LLVM (e.g. `lto2`) is multithreaded.
Example data collected:
$ opt -passes="default<O3>" -stats < ./sqlite.bc > /dev/null
Statistics
3 DTU-stats - Number of invalid updates discarded
7058 DTU-stats - Number of lazy updates applied
2541 DTU-stats - Number of no-ops removed
3 DTU-stats - Number of recalculations requested
===-------------------------------------------------------------------------===
DTU timing
===-------------------------------------------------------------------------===
Total Execution Time: 0.0228 seconds (0.0230 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.0223 ( 98.3%) 0.0001 ( 97.2%) 0.0224 ( 98.3%) 0.0227 ( 98.4%) apply-updates -- DomTree
0.0003 ( 1.4%) 0.0000 ( 2.8%) 0.0003 ( 1.5%) 0.0003 ( 1.3%) apply-updates -- PostDomTree
0.0000 ( 0.1%) 0.0000 ( 0.0%) 0.0000 ( 0.1%) 0.0000 ( 0.2%) delete-edge -- DomTree
0.0000 ( 0.1%) 0.0000 ( 0.0%) 0.0000 ( 0.1%) 0.0000 ( 0.1%) insert-edge -- DomTree
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) recalculate -- DomTree
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) delete-edge -- PostDomTree
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) insert-edge -- PostDomTree
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) recalculate -- PostDomTree
0.0227 (100.0%) 0.0001 (100.0%) 0.0228 (100.0%) 0.0230 (100.0%) Total
===-------------------------------------------------------------------------===
DomTree Calculation
===-------------------------------------------------------------------------===
Total Execution Time: 0.1437 seconds (0.1458 wall clock)
---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name ---
0.0899 ( 63.4%) 0.0017 ( 88.4%) 0.0916 ( 63.8%) 0.0931 ( 63.9%) recalculate -- DomTree
0.0406 ( 28.6%) 0.0002 ( 8.0%) 0.0408 ( 28.4%) 0.0409 ( 28.0%) apply-updates -- DomTree
0.0110 ( 7.8%) 0.0001 ( 3.4%) 0.0111 ( 7.7%) 0.0116 ( 8.0%) recalculate -- PostDomTree
0.0002 ( 0.1%) 0.0000 ( 0.2%) 0.0002 ( 0.1%) 0.0002 ( 0.1%) delete-edge -- DomTree
0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) 0.0000 ( 0.0%) insert-edge -- DomTree
0.1417 (100.0%) 0.0019 (100.0%) 0.1437 (100.0%) 0.1458 (100.0%) Total
Repository:
rL LLVM
https://reviews.llvm.org/D50300
Files:
include/llvm/IR/DomTreeUpdater.h
include/llvm/Support/GenericDomTree.h
lib/IR/DomTreeUpdater.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50300.159198.patch
Type: text/x-patch
Size: 13113 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180805/0e6da171/attachment.bin>
More information about the llvm-commits
mailing list