JavaScriptが遅い4つの原因とは?

2010年3月23日

1つ前の記事「JavaScriptをいかに高速化するか、IE9、Firefoxの取り組み」では、IE9とFirefoxにおけるJavaScriptの高速化について紹介しましたが、そもそもJavaScriptの実行速度はなぜ遅いのでしょう?

その理由について、Mozilla Japanテクニカルマーケティング担当の浅井智也氏が、スライド「Trace Monkey」でポイントをまとめています(このスライドはタイトルから分かるとおり、Firefoxの当時の新しいJavaScriptエンジン「Trace Monkey」を紹介するために1年以上前に作成されたスライドですが、1つ前の記事を見ると、ここで示された課題はいまも変わっていないようです)。

全67枚のスライドの20枚目から24枚目の5枚を以下に紹介します。

fig

JavaScriptが遅い原因は、以下の4点にまとめられています。

  • インタープリタ型言語
  • 動的型付け言語
  • クラスが存在しない
  • 配列が存在しない

それぞれについて詳しく解説されています。

fig

インタープリタ型言語がそれほど速くないのはみなさんよくご存じのことでしょう。そのために最近ではネイティブコードへの変換による高速化の手法がよく見られます。

fig

動的型付けはJavaScriptの特徴の1つですが、そのために実行時に頻繁に型チェックと型変換を行わなければならないことが、実行速度を遅くしている原因の1つとのこと。

fig

クラスが存在せず、オブジェクトの構造が決まっていないこと、プロパティへのアクセスにハッシュ計算が必要なことが要因として挙げられています。

fig

そして最後の理由は配列が存在しないこと。オブジェクトの一種として配列があるため、1つ前の「クラスが存在しない」で挙げられた理由と同じように、プロパティへのアクセスがボトルネックとなっているようです。

モジラをはじめ、アップル、グーグル、オペラ、そしてマイクロソフトといったWebブラウザベンダは、こうした原因によるJavaScriptの遅さをいかに解決していくのか、それぞれの技術を投入してしのぎを削っているわけですね。

あわせて読みたい

JavaScript Web技術




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本