O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Javaはどれだけ速いのか

JJUGナイトセミナー「おうちで!ビール片手にLT大会!」で発表したLTです。 #jjug

  • Seja o primeiro a comentar

Javaはどれだけ速いのか

  1. 1. Java ​はどれだけ速いのか @YujiSoftware
  2. 2. Java のイメージは? 遅い or 速い
  3. 3. なぜ Java = 遅いイメージがあるのか? •Duke のせい? – 短足 – 太ってる → 「なんか動きが遅そう…」 • GCは遅いという概念 • Java 1.1 の頃の印象が残っている
  4. 4. なぜ Java = 速いイメージがあるのか? •Duke のおかげ? – Tumbling Duke → 「Java はすごい!」 • JIT コンパイラが強力 – C言語よりも速くなるときがあるとも言われている • GC​が速くなった
  5. 5. 結局のところどうなの? • やってみるしかない! • 数独(ナンプレ)解析プログラムを作成 – 主な処理は2つ • 問題の読み込み(100万件) • 数独の解析(主にループと条件分岐) • Java 版と C 言語版で実行時間を比較 – Java はどれだけ速いのか…!
  6. 6. 実行結果 • C言語の方が速い! 4.49秒 3.32秒
  7. 7. どうしてこうなった • 最初は C言語の方が遅かった – C言語で、200万回 malloc したら遅かった – 2回にしたら、一気に速くなった – Javaは、200万回 new してても十分に速かった – 2回にしても、ほとんど実行時間は変わらなかった • 結果、Java が負けた orz • C言語にも弱点はある – しかし、今回のプログラムでは Java が有利にならなかった
  8. 8. まとめ • Java は C 言語よりも遅い
  9. 9. まとめ • Java は C 言語よりも遅い ちょっと 待った!
  10. 10. 今日のテーマ 「Java はどれだけ速いのか」 • Java は遅いで終わらせるわけにはいかない – 相手が悪かった • C言語以外と比較してみた – 改めて、Java はどれだけ速いのか…!
  11. 11. 実行結果 • やっぱり は速い! 4.49秒 7分21秒 9分43秒
  12. 12. 動的型付け言語との比較は ずるいのでは?
  13. 13. どういうこと • Ruby や Python は動的型付け言語 – 実行時に型を判断するオーバーヘッドがある – 最適化が難しい • Java は静的型付け言語 – コンパイル時に型を確定させている – 最適化がしやすい • 比較するなら、同じ種類の言語同士でやるべき!
  14. 14. 今日のテーマ 「Java はどれだけ速いのか」 • 真打登場 – C# (.NET Core) – Go – Rust – C • これらの言語と比較してみた – 果たして、Java はどれだけ速いのか…!
  15. 15. 実行結果 4.49秒 3.32秒 2.86秒 2.90秒 6.39秒
  16. 16. まとめ • Java は C# よりも速い – Rust とか Go とか、速すぎでは… • ただし「今回の数独解析プログラムの場合」という条件付き – プログラムの種類によって大きく順位が変わる可能性あり – 実行環境によっても大きく変わる • OS、CPUの種類、メモリの量、プログラマーの腕、などなど • 特に、Linux上で動かしたので C# が少し不利だったかも… • みなさんも、いろいろなプログラムで試してみましょう!
  17. 17. Java ​はどれだけ速いのか @YujiSoftware
  18. 18. 補足 • 実行環境 – Ubuntu 18 on VirtualBox • Intel Core i7-7500U @ 2.70GHz • CPU2コア、メモリ4GBを割り当て • 実行バージョン – GCC 7.5.0 – Java 14.0.2 – Go 1.15 – Rust 1.45.1 – .NET 3.1.401 – Ruby 2.5.1p57 – Python 3.6.9 • ソースコード – https://github.com/YujiSoftware/Sudoku – 検証求む!

×