タグ

ブックマーク / nmi.jp (4)

  • 高速化の観点から new Array(100) を使わない方が良い理由

    別件で V8 の JIT コードの逆アセンブルを眺めている時に気づいたのですが、JavaScriptで new Array(100) という形で配列を作るのは、高速化の観点から言うと V8 においては避けるべき書き方です。 高速化を求める方は、 new Array() や [] で作成して Array#push で追加していくのが良いでしょう。この記事では、その理由を説明します。 今回の記事は、以下の V8 のブログ記事を参考にしております。 https://v8.dev/blog/elements-kinds 「詰まった配列(Packed Array)」と「穴あき配列(Holey Array)」 v8 は内部的に、その配列がどういうタイプの配列であるかの状態を記録しており、その情報を利用して最適化を適用します。状態は内部的には21個あるのですが、今回話題にするのは、その中でも「詰まってい

    kadoppe
    kadoppe 2019/06/10
  • DeNAで働き始めて2年半が経ちました

    2014年が今日から始まりました。どうぞ皆様、今年もよろしくお願いします。 さて2014年1月1日で、DeNAで働き始めてからちょうど2年半が経過したことになりました。2年半というのは私にとって大きなマイルストーンとなりますので、それについて語ってみたいと思います。 今私はDeNAでHTML5総括という立場を名乗っておりますが、その前は「株式会社ブロードテイル」という会社を設立し、その代表取締役をしておりました。設立は2008年3月26日、今から6年前ですね。当時普及していたフィーチャーフォン(ガラケー)のFlash Liteを利用し、携帯上でインストールなくプログラムを実行可能にするフレームワークを作成・販売しておりました。 その会社で2011年の11月に開発を始めたのが、「ExGame」というiPhoneのブラウザ上でFlashを再生するためのミドルウェアツールでした。この開発に関わる

  • JavaScriptでアニメーションを書く初歩の初歩

    JavaScriptを使ってアニメーションを書くときに有用なテクニックの、基中の基をご紹介します。おそらく、このブログを見ている人のほとんどにとっては釈迦に説法だと思います。今回、requestAnimationFrameの話すらしません。その点、ご留意ください。 まず、JavaScriptでアニメーションをする場合に気をつけないといけないのが、一度JavaScriptの実行(Context)を抜けないとブラウザに描画が反映されないということです。簡単に言うと、 <html><head><title>bad sample</title><script> onload = function() { var e = document.getElementById("e"); for(var i = 0; i <= 100; i += 5) { e.style.left = e.style.

  • JavaScript イディオム集

    JavaScriptでは、初見の人にはさっぱりわからないけれども、ある程度慣れた人は当たり前に使うイディオムが結構たくさんあります。知ってしまえば何てことはないので、私の知っている限りのイディオムとその意味を解説します。 (7/3追記: twitter等で教えていただいた内容を追加しました) +v (数値化) var v = "123"; console.log(+v + 100) // 223 console.log(v + 100) // 123100 vを数値化する方法では最もメジャーです。parseFloat(v) に比べて高速なのに加えて、parseFloatとは細かい挙動が異なります(例えば空文字列の場合、parseFloatならば NaN になりますが、 +v の場合はゼロになります)。必ず数値になることが保証されており、文字列などで数値化出来ない場合はNaNが返ります。 v

  • 1