タグ

ブックマーク / js-next.hatenablog.com (4)

  • SIMD型について - JS.next

    概要 新しいプリミティブ型であるSIMD型及びAPIがV8で実装されてきている。 SIMDとは、複数の数値を並べて1つの値としたようなデータ型である。 これはCPUによって効率良くサポートされているデータ型であり、 1 + 2 -> 3 をするように [ 1, 2, 3, 4 ] + [ 2, 3, 4, 5 ] -> [ 3, 5, 7, 9 ] を1回の演算ですることができる。 つまり、沢山の数値を扱う場面でSIMD型を利用することで、何倍ものパフォーマンス向上が期待できる。 (※WASMに入ることとなり、ESからは一旦取り除かれました。) 実装される型 float32x4 32bit浮動小数点型を4つ並べた128bitのデータ型 float32はJSの通常のnumberであるところのfloat64より精度が低い int32x4 32bit符号付き整数型を4つ並べた128bitのデータ

    SIMD型について - JS.next
  • for文でのlet変数が毎ループ新スコープを持つようになった - JS.next

    概要 かつてはfor文初期化句で宣言された変数は、for文の直前で宣言されたように振舞っていたが、各ループでスコープを引きづらないように仕様が変更され、V8も追従した。 例 for (let i = 0; i < 5; i++) { ~~~ } これは今までは次のコードと等価だった。 { let i = 0 for (; i < 5; i++) { ~~~ } } つまりfor文中で関数を定義するとこうなっていた。 let funs = [] for (let i = 0; i < 5; i++) { funs.push(function () { return i }) } funs.map(function (fun) { return fun() }) // [5,5,5,5,5] この結果が[0,1,2,3,4]になるのが今回の変更である。 つまり一番最初のコードはこれと等価になる

    for文でのlet変数が毎ループ新スコープを持つようになった - JS.next
    hide_o_55
    hide_o_55 2014/05/30
  • Promiseについて - JS.next

    概要 Promiseとは非同期処理を上手く扱う為のAPIであり、パターンである。 非同期の処理の完了後に続けて処理を行いたいとき、よくコールバックパターンが使われるが、処理が連続するとコールバック地獄と言われる分かりづらいソースコードになってしまう。 また、複数の非同期処理が完了した時に処理を行うなど、コールバックパターンでは難しい事をスマートにできるのがこのPromiseである。 今まではDOMの方でDOM Promiseとして仕様策定が進められていたり、ライブラリのDeferredが有名だったが、ES2015標準に入ることになり、V8に実装された。 実装されたメソッド Promise.resolve(x) Promise.reject(x) Promise.all( [p1, p2, p3, ......] ) Promise.race( [p1, p2, p3, ......] )

    Promiseについて - JS.next
  • ArrayIteratorがインデックスを数値型で返すようになった - JS.next

    変更点 タイトルの通り 影響 一部のArrayIteratorを返すメソッド Array.prototype.keys Array.prototype.entries 概要 先日規格の仕様変更があり、V8もそれに追従した。 これ自体は小さな変更だけど、ArrayIteratorがfor-inループと同じ感じだと思っていると詰まるかも。 以下、Array.prototype.keysでの例を挙げてみる。 var i var A = [ 'a', 'b', 'c' ] // 変更前 for (i of A.keys()) console.log(i) // "0" "1" "2" typeof i // "string" // 変更後 for (i of A.keys()) console.log(i) // 0 1 2 typeof i // "number" // for-in for (

    ArrayIteratorがインデックスを数値型で返すようになった - JS.next
  • 1