Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dart VM Performance

3,694 views

Published on

Dart VM improves performance, snapshots and jit compiler optimizations.

Published in: Technology

Dart VM Performance

  1. 1. Dart VM PerformanceOutline Dart VM のベンチマーク Dart VM の仕組み2013/05/16 Google I/O Extended in Japan LTDart VM Advent Calendar から来ましたnothingcosmos <nothingcosmos@gmail.com>
  2. 2. 皆さん Dart VM ご存知ですか?
  3. 3. 2011/11 の Dart VM
  4. 4. DeltaBlue(2012/05)DeltaBlue(2013/05)Richards(2012/05)Richards(2013/05)0 100 200 300 400 500 600 700 800 900 1000180669248887Octane ベンチマークのスコアスコアここ 12 ヶ月の Dart VM の高速化約 3.71 倍約 3.57 倍
  5. 5. 皆さん Dart VM に興味が沸いてきませんか?
  6. 6. Fibonacchi 数で速さを測定 Fibonacchi 数 (40) で測定 V8, JVM, gcc, clang, icc, ifort と比較constexpr は除外int fibo(int n) {if (n < 2) {return n;} else {return fibo(n-1) + fibo(n-2);}}
  7. 7. V8  fibo(40) 1370 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  8. 8. JVM  fibo(40) 420 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  9. 9. clang  fibo(40) 600 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  10. 10. gcc  fibo(40) 430 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  11. 11. icc  fibo(40) 480 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  12. 12. ifort  fibo(40) 640 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  13. 13. Dart VM  fibo(40) 408 msV8JVMclanggcciccifortDart VM0 200 400 600 800 1000 1200 1400 16001370420600430480640408fibo(40) の実行時間実行時間 (ms)
  14. 14. これだけ見るとDart VM は JVM や C とほぼ同等の速度になりつつある。※ ただし Fibonacchi 数に限る?
  15. 15. Dart の公式ベンチ 緑が Dart VM 、黄色が V8 縦軸がスコア、横軸が Timestamp
  16. 16. Dart の公式ベンチ DeltaBlue Dart VM は V8 の 2 倍のスコア
  17. 17. Dart の公式ベンチマーク Richards Dart VM は V8 の 1.67 倍のスコア
  18. 18. Dart の公式ベンチマーク Tracer Dart VM は V8 の 2.16 倍のスコア
  19. 19. DeltaBlue で JVM と比較してみた
  20. 20. DeltaBlue で JVM と比較してみた Dart VM が 438 で 10% くらい速い。
  21. 21. InfoQ:Latest Dart VM Beats JVM in DeltaBlue Benchmark 起動速度は Dart VM が速い ピーク速度は JVM が速いiteration JVM6(ms)DartVM(ms)差 (ms)10x 9.3 5.9 3.4100x 2.96 1.24 1.721000x 0.898 0.636 0.26210000x 0.5229 0.536 -0.0131100000x 0.48908 0.55263 -0.06355
  22. 22. Dart VM のゴール
  23. 23. 速さの秘密は Snapshots JIT Compiler Optimization
  24. 24. Snapshot の仕組み Dart VM 起動時を FullSnapshot しバイナリに埋め込む。 +400kbyte Core の I/O と Scan が不要100,000micros ­> 100micros
  25. 25. Snapshots の有無を比較dartdart_no_snapshot0 100 200 300 400 500 600410410430540fibo(40) の実行時間 (ms)fibotime130ms20ms起動が 1/6
  26. 26. JIT CompileDart VMIsolateHeapJITCompilerDart SrcObjectPoolInitializeJITCompileGCCode
  27. 27. Runtime FeedbackDart VMIsolateHeapJITCompilerDart SrcObjectPoolExecutionGCCodeLogType feedback
  28. 28. JIT Compiler OptimizationDart VMIsolateHeapJITCompilerDart SrcObjectPoolGCCodeLogExecutionOptimizedCodeOptimizerOptimize
  29. 29. DeltaBlue 2012/07 ~ 2012/11Optimizer の追加SelectRepresentation,TypePropagaotrInlining
  30. 30. DeltaBlue 2012/11 ~ 2013/02
  31. 31. DeltaBlue 2013/01 ~ 2013/05(V8 の 2 倍 )Field Type FeedbackPolymorphic Inlining
  32. 32. Richards 2012/07 ~ 2012/11Optimizer の追加SelectRepresentation,TypePropagaotrInlining
  33. 33. Richards 2012/09 ~ 2012/12RedundantLoadElimination
  34. 34. Richards 2013/01 ~ 2013/05(V8 の 1.67 倍 )Branch OptimizationCompare OptimizetionField Type Feedback
  35. 35. Tracer 2013/03 ~ 2013/05(V8 の 2.16 倍 )Store Sinking の追加
  36. 36. Try Dart VM !もっと先へーー《加速》したくはないかVM
  37. 37. 測定環境 OS:Ubuntu 12build/target:ia32cpu:core i7 2600k Dart VM versionbleeding_edge r22719(2013/05/16)
  38. 38. 補足 Dart VM beeding_edge r22611(2013/05/16) V8 trunk(2013/05/12) 3.18.6 JVM7 Hotstpot 1.7.0_15(Option: なし ) clang3.3RC1 trunk(Option:­O3) gcc 4.6.3(Option:­Ofast) icc/ifort 13.1.1(Option:­fast)

×