summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2016-03-01 15:03:16 -0800
committerbuzbee <buzbee@google.com>2016-03-23 11:11:26 -0700
commitc1d6b341eed646e5adafc6c4fd4e3748f0292368 (patch)
treeddee928954b03a919ce601f12876f1fe161d577a /compiler/optimizing/graph_visualizer.cc
parenteecf60d51b481647c8508f22b3d6ce437773ea0c (diff)
ART: Improve JitProfile perf in arm/arm64 mterp
ART currently requires two profiling-related things from the interpreters: hotness updates and OSR switch checks. The hotness updates previously used the existing instrumentation framework - which is flexible, but quite heavyweight. For most things, the instrumentation framework overhead is acceptable, but because we do a hotness update on every backwards branch the overhead is unacceptable. Prior to this CL, branch profiling dominates interpreter cost. Here, we bypass the instrumentation framework for hotness updates and deliver a significant performance improvement. Running interpreter-only (dalvikvm -Xint) on a Nexus 6, we see the logic subtest of Caffeinemark improving from 2600 to 9200, and the overall score going from 1979 to over 3000. Compared to the C++ switch interpreter, we see a 6x improvement on the branchy logic subtest and a 2.6x improvement overall. Compared with the previous mterp which did not have support for jit profiling, we see a few (1% to 5%) performance loss on the standard command-line benchmarks. I consider this acceptable (we could create an alternate non-profiling mterp which would have no penalty, but I don't consider this overhead big enough to justify that). Change-Id: I50b5b8c5ed8ebda3c8b4e65d27ba7393c3feae04
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions