第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Javascript ES6集合的計(jì)算/時(shí)間復(fù)雜度

Javascript ES6集合的計(jì)算/時(shí)間復(fù)雜度

溫溫醬 2019-10-31 14:02:23
ES6規(guī)范為鍵集合(Set,Map,WeakSet和WeakMap)提供什么時(shí)間復(fù)雜度(大O表示)?我的期望,我期望的大多數(shù)開(kāi)發(fā)人員,是規(guī)范和實(shí)現(xiàn)將使用被廣泛接受的高性能算法,在這種情況下Set.prototype.has,add并delete在平均情況下都是O(1)。這同樣適用于Map和Weak–等效物。對(duì)我來(lái)說(shuō),實(shí)現(xiàn)的時(shí)間復(fù)雜性是否在例如ECMAScript 2015 Language Specification-6th Edition — 23.2 Set Objects中規(guī)定,并不是完全顯而易見(jiàn)的。除非我誤解了(當(dāng)然,我確實(shí)很有可能),但看起來(lái)ECMA規(guī)范要求實(shí)現(xiàn)(例如Set.prototype.has)要使用線性時(shí)間(O(n))算法。令我驚訝的是,規(guī)范中沒(méi)有要求或什至不允許使用更高性能的算法,并且我對(duì)解釋為什么如此的情況非常感興趣。
查看完整描述

3 回答

?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

對(duì)于任何好奇的人,我做了一個(gè)非??焖俚幕鶞?zhǔn)測(cè)試:


const benchmarkMap = size => {

  console.time('benchmarkMap');

  var map = new Map();

  for (var i = 0; i < size; i++) map.set(i, i);

  for (var i = 0; i < size; i++) var x = map.get(i);

  console.timeEnd('benchmarkMap');

}


const benchmarkObj = size => {

  console.time('benchmarkObj');

  var obj = {};

  for (var i = 0; i < size; i++) obj[i] = i;

  for (var i = 0; i < size; i++) var x = obj[i];

  console.timeEnd('benchmarkObj');

}


var size = 1000000;


benchmarkMap(size);

benchmarkObj(size);

我運(yùn)行了幾次,結(jié)果如下:


(2017 MacBook Pro,2.5 GHz i7帶16G RAM)


benchmarkMap: 189.120ms

benchmarkObj: 44.214ms


benchmarkMap: 200.817ms

benchmarkObj: 38.963ms


benchmarkMap: 187.968ms

benchmarkObj: 41.633ms


benchmarkMap: 186.533ms

benchmarkObj: 35.850ms


benchmarkMap: 187.339ms

benchmarkObj: 44.515ms


查看完整回答
1 反對(duì) 回復(fù) 2019-10-31
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

所有O(1)算法也都是O(n),因此讓性能較低的規(guī)范實(shí)現(xiàn)不會(huì)造成任何危害。性能較差的實(shí)現(xiàn)可能在資源受限的系統(tǒng)中可能會(huì)引起一些關(guān)注,因?yàn)樗鼈兒芸赡苄枰俚拇a/空間。

查看完整回答
反對(duì) 回復(fù) 2019-10-31
  • 3 回答
  • 0 關(guān)注
  • 1788 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)