On Wednesday, March 4, 2015 at 3:42:39 PM UTC-8, Madhukar Kedlaya wrote: > Hi folks, > > For the past few days I have been trying an experiment of caching type > information across executions of a benchmark. The main goal of this > experiment is to see whether caching type information and feeding it to the > engine in subsequent runs provides any sort of speedup. Initial results > show that it is indeed possible to achieve speedup for few of the > benchmarks. > > During the first run, I profile and record the type information that is > added to the type set of a program point using the TypeScript::Monitor > call. During the subsequent runs, I feed this information ahead of time in > the BaselineCompiler::compile method. Currently, I am concentrating solely > on primitive types. > > Initial results showed slowdowns for almost all of the benchmarks. I > realized that most of the types that are tracked are useless unless the > function becomes hot and is compiled by Ion. Therefore, I streamlined the > profiling to collect information only for such functions. Later, I realized > that I should concentrate on the functions that bail out of Ion because of > TypeBarrierV violation. > > Here are the results that I have for few of the Octane benchmarks. I ran > the benchmarks 20 times and averaged the scores, ignoring the first two > scores. I concentrate on benchmarks that have functions that cause > Bailout_TypeBarrierV kind of bailout. > > Benchmark Oracle Score Baseline Score Score Speedup run-box2d.js > 49664.9047619 38278.4761905 1.2974629532 run-crypto.js 16216.3333333 > 16803.8571429 0.965036372 run-earley-boyer.js 22468 21787.6666667 > 1.0312256169 run-navier-stokes.js 24852.1904762 25664.6190476 0.9683444134 > run-typescript.js 18006.7142857 16610.0952381 1.084082543 run-gbemu.js > 36623.952381 31222.2857143 1.1730067656 run-pdfjs.js 14821.5714286 > 12264.0952381 1.2085336212 Average > > *1.1039560408* > > As you can see the speedup numbers are not that great. But I see some > promise here. I would like some feedback on how to handle other kind of > Bailouts by caching profile information. Caching and encoding typeobjects > is something that I am working on right now. > > Intuitively, feeding the type information should remove the bailouts in the > subsequent runs. But I see a few of them still persisting. Any idea why > this might be happening? > > Thanks, > Madhukar N Kedlaya > Graduate Student, > University of California, Santa Barbara > http://cs.ucsb.edu/~mkedlaya Oops! formatting error.
Benchmark Oracle Score Baseline Score Score Speedup run-box2d.js 49664.9047619 38278.4761905 1.2974629532 run-crypto.js 16216.3333333 16803.8571429 0.965036372 run-earley-boyer.js 22468 21787.6666667 1.0312256169 run-navier-stokes.js 24852.1904762 25664.6190476 0.9683444134 run-typescript.js 18006.7142857 16610.0952381 1.084082543 run-gbemu.js 36623.952381 31222.2857143 1.1730067656 run-pdfjs.js 14821.5714286 12264.0952381 1.2085336212 Average 1.1039560408 _______________________________________________ dev-tech-js-engine-internals mailing list dev-tech-js-engine-internals@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals