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

Reply via email to