JavaScript で配列を走査する 4 つの方法:for、for-in、for-of、forEach()
- 2021年6月12日
- Liu, An-Chi 劉安齊
Code makes the world a better place
性能分析ツール(Profiler)を使うと、ソフトウェアの実行に関するより多くの情報を得られます。たとえば、使用メモリ量、CPU サイクル、キャッシュミス、I/O 処理時間などです。これらの情報は、プログラムの性能ボトルネックを見つける上で非常に役立ちます。どこがプログラムを遅くしているのかを見つけ、性能を最大化することが性能分析の最大の目的です。
本記事では Linux の性能分析ツール perf を紹介します。簡単なプログラム例を使って perf による分析手順を示し、分析ツールを使うと問題の根本原因をより見つけやすくなることを確認します。本文は Gabriel Krisman Bertaz の Performance analysis in Linux を参考にしています。
Continue reading
Emscripten は C/C++ を WebAssembly に変換できるツールです。裏側では LLVM を経由して変換し、Pthread の変換もサポートしています。Pthread は JavaScript の Web Worker と WebAssembly に変換されます。さらに OpenGL を WebGL に変換することもでき、ブラウザ上でネイティブに近い性能でプログラムを動かせます。
本記事の焦点は、Pthread を Web Worker + WebAssembly に変換する部分です。実際に例題プログラムを用意して変換してみます。ただ、良いテストプログラムを見つけるのは簡単ではないので、変換テスト用に π を計算する Pthread の平行プログラムを書きました。
まずは Emscripten で Pthread を JS に変換する方法を紹介します。公式ドキュメント通りに進める過程でいくつか落とし穴に遭遇したので、同じ罠に落ちないように記録しておきます。その後、(1) ネイティブ C (2) Emscripten が生成した JS/WASM (3) JavaScript で直接書いた Web Worker の 3 ケースで性能差を分析します。
Continue reading