タグ

ブックマーク / mindcat.hatenadiary.org (2)

  • JavaScriptのswitch文の速度はブラウザの違いでこんなにも差があった。 - 風と宇宙とプログラム

    はじめに JavaScriptswitch文は、CやJavaと異なりcaseのところに任意の式が書けるため、実行時にcaseの式も評価されるので基的にはif-else文の並びと類似のものになります。つまり、caseの数に応じてパフォーマンスも低下すると予想されます。当にそうなのか確認してみました。 測定した各ブラウザのバージョンは以下の通りです。 Firefox Chrome Safari Opera IE 3.5.6 4.0.249.30 4.0.4 (531.21.10) 10.10 8.0.6001 caseが数値リテラルの場合 パフォーマンスを測定するテストコードは下記のような簡単なものです。caseが1000個あるswitch文を10万回繰り返して実行したときの時間を測定しました。perf_test()関数の引数vに与える値に応じてcaseの条件で一致する場所が変わります。

    JavaScriptのswitch文の速度はブラウザの違いでこんなにも差があった。 - 風と宇宙とプログラム
    TAKESAKO
    TAKESAKO 2010/01/27
    JavaScriptのswitch文の速度はブラウザの違いでこんなにも差があった
  • ECMAScript 5th Editionで改善された3rd Editionの項目 - 風と宇宙とプログラム

    ざっと、5th Editionのドラフトを眺めてみて、3rd Editionの仕様の不備と思っていた部分が改善されているかどうかを調べてみた。以下、v3は3rd Edition、v5は5th Editionのこと。 for in文のinの右のパラメータがnullの場合 Annexにもちゃんと記述されているが、v3では for (var i in null) のようにinの右のパラメータに対してToObject()が実行されるため、それがnullの場合にはTypeError例外が発生する仕様になっていた。実際のブラウザのJavaScript実装ではそのような例外が発生することはなく、for体が実行されない動作になっている。v5ではToObject()を実行する前に、それがnullかundefinedであるかをチェックする記述が追加されている。 文のない関数体 v3では文のない関数体の扱

    ECMAScript 5th Editionで改善された3rd Editionの項目 - 風と宇宙とプログラム
    TAKESAKO
    TAKESAKO 2009/07/27
    > Stringクラスに[[GetOwnProperty]](P)メソッドが定義されたので、文字列中の文字をcharAt()以外にも配列表記でアクセス方法が正式に導入された
  • 1