Upgrade to Pro — share decks privately, control downloads, hide ads and more …

javascriptのデータ構造について

 javascriptのデータ構造について

javascriptのデータ構造の特徴とパフォーマンスについて

More Decks by Taketoshi Aono(青野健利 a.k.a brn)

Other Decks in Programming

Transcript

  1. j ja av va as sc cr ri ip pt

    t D Da at ta a S St tr ru uc ct tu ur re es s
  2. ה׶ִ֮׆鋙ִ׷ֿה •  㘗ָずׄ㜥さדꂁ⴨ד葺ְ㜥さ => Array •  㘗ָ麩ֻגꂁ⴨ָ葺ְ㜥さ => Object • 

    せ⵸ד،ؙإأ׃׋ְ㜥さ => Object •  Set׾⢪ְ׋ְ㜥さ => Object •  Object׾ؗ٦ח׃׋Map٥Setָק׃ְ㜥さ => Map٥Set •  Iterator׾⢪ְ׋ְ㜥さ => Object.keys •  暴㹀ךObjectַ׵׃ַ،ؙإأׇׁ׋ֻזְ㜥さ => WeakMap •  Objectך㼐ㄏהず劍׃׋ְ㜥さ => WeakMap •  غ؎شٔ׾䪔ְ׋ְהֹ => TypedArray •  ؒٝر؍،ٝ׾濼׶׋ְהֹ => DataSet
  3. Array ת׆כծֶ꼧厩׫ךꂁ⴨דׅկ P Pr ro os s •  ؎ٝرحؙأ穗歋ד،ؙإأׅ׷ֿהדծ넝鸞ח暴㹀ךر٦ة׾《䖤〳腉 • 

    ꥴ꟦זֻ⚛ץ׷הًٌٔ♳ח鸬竲׃׋걄㚖ד然⥂ׁ׸׷׋׭넝鸞 C Co on ns s •  ر٦ةꆀָ㟓ִ׷ה䯏Ⰵׅ׷׋ןחًٌٔⱄ《䖤ծ؝ؾ٦ָ饥׶鹼ְ •  䌢ח侧⦼ד،ؙإأ׃זְהְֽזְկ
  4. Object ְ׻ײ׷鸬䟝ꂁ⴨ה׃ג⢪ִתׅկ 鸞䏝כꂁ⴨ך如ח傍ְדׅկ P Pr ro os s •  ؗ٦せָ荈歋

    •  ⦼׮荈歋 •  知⽃ח䭁䓸דֹ׷ •  ꂁ⴨ה׃ג׮⢪ִ׷ C Co on ns s •  ؗ٦せחכ俑㶵⴨׃ַ⢪ִזְ侧⦼כ荈⹛㢌䳔
  5. const u32Arr = new Uint32Array(new ArrayBuffer(1024));! // ArrayBufferの第一引数はバイト数、実際の要素数はViewのバイト数で割った数 // 32bitなら1024

    / 4で256要素格納可能 u32Arr[0] = 1; // ここでは0byteオフセット byteLength = 0 && length = 0! u32Arr[1] = 1; // ここでは4byteオフセット byteLength = 4 && length = 1! ! const dv = new DataView(new ArrayBuffer(1024));! dv.setUint8(2, 1); // Uint8の値を2byteオフセットの位置に書き込む! dv.setInt32(0, 1); // Int32の値を4byteオフセットの位置に書き込む
  6. Map Java괏㄂זMapؙٓأדׅկ ֿךؙٓأך剑㣐ך暴䗙כؗ٦חׅץגךؔـآؙؑز ׾⢪ִ׷ֿהדׅկ P Pr ro os s • 

    ؗ٦ָ荈歋 •  iterator׾㹋鄲׃ג֮׷ C Co on ns s •  ؗ٦ָ⿫撑׾䭯׍竲ֽ׷ •  鹼ְ
  7. Map 姻 姻׃ ׃ֻ ֻ⢪ ⢪ֲ ֲ •  ؗ٦חؔـآؙؑز׾⢪ֲ㜥さכ⢪׻זֻז׏׋׵׃׏ַ׶嶊ׅկ • 

    俑㶵⴨׾ؗ٦חׅ׷㜥さכ׉׮׉׮⢪׻זְկ➿׻׶חؔـآؙؑز ׾⢪ֲ
  8. Set Java괏㄂זSetؙٓأדׅկ Mapהずׄ״ֲחؔـآؙؑز׾ؗ٦חדֹתׅկ P Pr ro os s •  ؗ٦ָ荈歋

    •  iterator׾㹋鄲׃ג֮׷ C Co on ns s •  ؗ٦ָ⿫撑׾䭯׍竲ֽ׷ •  鹼ְ
  9. Set 姻 姻׃ ׃ֻ ֻ⢪ ⢪ֲ ֲ •  ؗ٦חؔـآؙؑز׾⢪ֲ㜥さכ⢪׻זֻז׏׋׵׃׏ַ׶嶊ׅկ • 

    俑㶵⴨׾ؗ٦חׅ׷㜥さכ׉׮׉׮⢪׻זְկ➿׻׶חؔـآؙؑز ׾⢪ֲ
  10. 0 10 20 30 40 50 60 70 80 90

    100 Chrom Safari Firefox Edge Performance 剑׮鹼ְ׮ך׾100%ה׃׋הֹךぐر٦ة圓鸡ךػؿؓ٦وٝأ(2017/06/06) http://jsben.ch/#/hohWB
  11. Result •  㘗ָずׄ㜥さדꂁ⴨ד葺ְ㜥さ => Array •  㘗ָ麩ֻגꂁ⴨ָ葺ְ㜥さ => Object • 

    せ⵸ד،ؙإأ׃׋ְ㜥さ => Object •  Set׾⢪ְ׋ְ㜥さ => Object •  Object׾ؗ٦ח׃׋Map٥Setָק׃ְ㜥さ => Map٥Set •  Iterator׾⢪ְ׋ְ㜥さ => Object.keys •  暴㹀ךObjectַ׵׃ַ،ؙإأׇׁ׋ֻזְ㜥さ => WeakMap •  Objectך㼐ㄏהず劍׃׋ְ㜥さ => WeakMap •  غ؎شٔ׾䪔ְ׋ְהֹ => TypedArray •  ؒٝر؍،ٝ׾濼׶׋ְהֹ => DataSet