Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Issue 610813002: Subzero: Rewrite the pass timing infrastructure. (Closed)

Created:
6 years, 2 months ago by Jim Stichnoth
Modified:
6 years, 2 months ago
CC:
native-client-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Visibility:
Public.

Description

Subzero: Rewrite the pass timing infrastructure. This makes it much more useful for individual analysis and long-term translation performance tracking. 1. Collect and report aggregated across the entire translation, instead of function-by-function. If you really care about a single function, just extract it and translate it separately for analysis. 2. Remove "-verbose time" and just use -timing. 3. Collects two kinds of timings: cumulative and flat. Cumulative measures the total time, even if a callee also times itself. Flat only measures the currently active timer at the top of the stack. The flat times should add up to 100%, but cumulative will usually add up to much more than 100%. BUG= none R=jvoung@chromium.org Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-subzero.git;a=commit;h=c4554d784583d26a02eca8610b43511ade516082

Patch Set 1 #

Total comments: 1

Patch Set 2 : Bug fixes and performance improvements #

Total comments: 7

Patch Set 3 : Make the timer tree more efficient #

Patch Set 4 : Add a missing timer, reformat #

Patch Set 5 : Documentation changes #

Patch Set 6 : Fix the problem timing parse() #

Total comments: 16

Patch Set 7 : Code review changes #

Patch Set 8 : Make the optimized overlaps() implementation actually correct #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+381 lines, -154 lines) Patch
M Makefile.standalone View 1 2 2 chunks +3 lines, -2 lines 0 comments Download
M src/IceCfg.cpp View 1 2 3 12 chunks +38 lines, -7 lines 0 comments Download
M src/IceConverter.cpp View 1 2 4 chunks +6 lines, -7 lines 0 comments Download
M src/IceDefs.h View 1 2 2 chunks +4 lines, -22 lines 0 comments Download
M src/IceGlobalContext.h View 1 2 4 chunks +32 lines, -6 lines 0 comments Download
M src/IceGlobalContext.cpp View 1 2 3 4 5 6 5 chunks +12 lines, -9 lines 0 comments Download
M src/IceInst.h View 1 1 chunk +2 lines, -2 lines 0 comments Download
M src/IceOperand.cpp View 1 2 3 4 5 6 7 2 chunks +20 lines, -1 line 1 comment Download
M src/IceRegAlloc.cpp View 1 2 3 4 5 6 7 17 chunks +39 lines, -31 lines 0 comments Download
M src/IceTargetLowering.cpp View 1 2 1 chunk +2 lines, -0 lines 0 comments Download
M src/IceTargetLoweringX8632.cpp View 1 2 4 chunks +4 lines, -36 lines 0 comments Download
A src/IceTimerTree.h View 1 2 3 1 chunk +68 lines, -0 lines 0 comments Download
A src/IceTimerTree.cpp View 1 2 3 4 1 chunk +142 lines, -0 lines 0 comments Download
M src/IceTranslator.cpp View 2 chunks +1 line, -13 lines 0 comments Download
M src/PNaClTranslator.cpp View 1 2 3 4 5 6 5 chunks +2 lines, -11 lines 0 comments Download
M src/llvm2ice.cpp View 1 2 3 4 5 4 chunks +6 lines, -7 lines 0 comments Download

Messages

Total messages: 11 (1 generated)
Jim Stichnoth
Early results show that register allocation is taking 50% of the total translation time. Yikes! ...
6 years, 2 months ago (2014-09-27 16:22:23 UTC) #2
Jim Stichnoth
The latest patchset also has a couple of regalloc performance improvements. https://codereview.chromium.org/610813002/diff/20001/src/IceCfg.cpp File src/IceCfg.cpp (right): ...
6 years, 2 months ago (2014-09-28 14:26:40 UTC) #3
Karl
Also note. Using "recursive" and "nonrecursive" is not standard terminology. Typically, it is called "flat" ...
6 years, 2 months ago (2014-09-29 16:55:07 UTC) #4
Jim Stichnoth
The bug in measuring the parse time was fixed in patchset 6. Sorry Karl... :) ...
6 years, 2 months ago (2014-09-30 17:50:50 UTC) #5
jvoung (off chromium)
https://codereview.chromium.org/610813002/diff/100001/src/IceGlobalContext.cpp File src/IceGlobalContext.cpp (right): https://codereview.chromium.org/610813002/diff/100001/src/IceGlobalContext.cpp#newcode392 src/IceGlobalContext.cpp:392: void GlobalContext::pushTimer(TimerIdT ID) { Timers.get()->push(ID); } Could use the ...
6 years, 2 months ago (2014-09-30 20:19:04 UTC) #6
Jim Stichnoth
https://codereview.chromium.org/610813002/diff/100001/src/IceGlobalContext.cpp File src/IceGlobalContext.cpp (right): https://codereview.chromium.org/610813002/diff/100001/src/IceGlobalContext.cpp#newcode392 src/IceGlobalContext.cpp:392: void GlobalContext::pushTimer(TimerIdT ID) { Timers.get()->push(ID); } On 2014/09/30 20:19:04, ...
6 years, 2 months ago (2014-09-30 22:46:00 UTC) #7
Jim Stichnoth
6 years, 2 months ago (2014-09-30 22:46:05 UTC) #8
jvoung (off chromium)
lgtm https://codereview.chromium.org/610813002/diff/100001/src/IceOperand.cpp File src/IceOperand.cpp (right): https://codereview.chromium.org/610813002/diff/100001/src/IceOperand.cpp#newcode127 src/IceOperand.cpp:127: if (OtherBegin >= I->second) So the issue was ...
6 years, 2 months ago (2014-09-30 23:38:44 UTC) #9
Jim Stichnoth
https://codereview.chromium.org/610813002/diff/100001/src/IceOperand.cpp File src/IceOperand.cpp (right): https://codereview.chromium.org/610813002/diff/100001/src/IceOperand.cpp#newcode127 src/IceOperand.cpp:127: if (OtherBegin >= I->second) On 2014/09/30 23:38:44, jvoung wrote: ...
6 years, 2 months ago (2014-09-30 23:49:16 UTC) #10
Jim Stichnoth
6 years, 2 months ago (2014-09-30 23:49:42 UTC) #11
Message was sent while issue was closed.
Committed patchset #8 (id:140001) manually as
c4554d784583d26a02eca8610b43511ade516082 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698