澶у濂斤紝鎴戞槸鈥滃墠绔皬鏂扳€濓紝馃槆闀挎湡浠庝簨鍓嶇寮€鍙戯紝Android寮€鍙戯紝鐑埍鎶€鏈€傚湪缂栫▼鐨勯亾璺笂瓒婅蛋瓒婅繙~鍐欎綔鑳屾櫙锛氭垜浠粡甯镐細閬囧埌杩欐牱鐨勯棶棰樸€傚疄鐜板悓鏍风殑鍔熻兘鏈夊绉嶆柟妗堬紝浣嗘槸閫夋嫨鍝鏂规锛屽摢绉嶆柟妗堟渶濂斤紝鑰楁椂鏈€鐭憿锛熼櫎浜嗕功涓婂啓鐨勫拰鍒汉璇寸殑锛屾垜浠渶濂界敤鏁版嵁璇磋瘽锛岀溂瑙佷负瀹瀪鍩哄噯娴嬭瘯锛氬熀鍑嗘祴璇曟槸鎸囧瀹炵幇涓€绫绘祴璇曞璞$殑鏌愰」鎬ц兘鎸囨爣杩涜閲忓寲骞惰繘琛屼簡姣旇緝娴嬭瘯銆傗€斺€斻€婄櫨搴︾櫨绉戙€嬩娇鐢˙enchmark.js锛?.瀹夎闇€瑕佺殑渚濊禆锛歿"benchmark":"^2.1.4","chalk":"^4.1.0","console-table-printer":"^2.10.0","microtime":"^3.0.0","ora":"^5.1.0"}2.缂栧啓benchmark鐨勪富瑕佺粨鏋勶細娣诲姞涓€涓祴璇曠敤渚嬫潵璁剧疆monitorconstBenchmark=require("benchmark");constsuite=newBenchmark.Suite();constora=require("ora");constchalk=require("chalk");const{getRows,p,addRow}=require("./utils");const{description}=Benchmark.platform;constspinner=ora();console.log(chalk.green(description));spinner.start(chalk.grey("Testing..."));constcases=function(妗堜緥){//TODO娣诲姞妗堜緥//TODO璁剧疆鐩戣鍣ㄨ繑鍥炲浠?};module.exports={cases,};娉ㄦ剰锛氬悗闈㈠彲浠ョ洿鎺ュ啓娴嬭瘯鐢ㄤ緥锛屼笉鍐嶄笓娉ㄤ簬鍐欎富浣撶粨鏋?.浣跨敤benchmark鐨刟dd鍔熻兘娣诲姞娴嬭瘯鐢ㄤ緥锛歝ases.forEach((c)=>{constkey=Object.keys(c)[0];suite.add(key,c[key]);});4銆佽缃甿onitor杈撳嚭娴嬭瘯缁撴灉锛氳缃瘡涓祴璇曠敤渚嬬殑娴嬭瘯鎯呭喌姹囨€诲悗锛屼互琛ㄦ牸鐨勫舰寮忔樉绀哄弽棣堛€倁ite.on("cycle",function(event){spinner.succeed(chalk.green(String(event.target)));spinner.start(chalk.gray("娴嬭瘯涓嬩竴涓渚?.."));}).on("complete",function(){spinner.succeed(chalk.green("娴嬭瘯瀹屾垚"));getRows(this.filter("successful")).forEach((row)=>{addRow(row,row.case===this.filter("fastest").map("name")[0]);});p.printTable();});5.缁堢杈撳嚭琛細渚濊禆浜巆onsole-table-鎵撳嵃鏈哄簱锛岀敤浜庡疄鐜扮粓绔〃鐨勮緭鍑恒€俬zs鍒楁槸鐢ㄦ潵鎺掑簭鐨勶紝鎵€浠ラ殣钘忎簡銆備笉鐭ラ亾涓轰粈涔坔z鍒楄浆涓篘umber鍚庢帓搴忓け璐ャ€俢onstp=newTable({columns:[{name:"case",title:"TestCase"},{name:"hz",title:"鎵ц娆℃暟/绉?},{name:"rme",title:"RelativeError"},{name:"sampled",title:"鎬绘墽琛屾鏁?},{name:"conclusion",title:"Conclusion"},],sort:(r1,r2)=>Number(r1.hzs)-鏁板瓧(r2.hzs),disabledColumns:["hzs"],});6.琛ㄨ鏁版嵁鏁村悎锛氱涓€鍒楋細娴嬭瘯鐢ㄤ緥鍚嶇О绗簩鍒楋細姣忕鎵ц鐨勬祴璇曠敤渚嬫暟锛岃秺楂樿秺濂界涓夊垪锛氱浉瀵硅宸€肩鍥涘垪锛氱敤渚嬪疄闄呮墽琛屾鏁扮浜斿垪锛氱粨璁猴紝鏈€濂界殑鐢ㄤ緥鏍囪涓篺astestgetRows:function(events){constresult=[];Object.keys(events).forEach((key)=>{if(/^\d{0,}$/g.test(key)){const{name,hz,stats:{sample,rme},}=events[key];constsize=sample.length;result.push({case:name,hz:Benchmark.formatNumber(hz.toFixed(hz<100?2:0)),hzs:hz,rme:`\xb1${rme.toFixed(2)}%`锛岄噰鏍凤細`${size}run${size==1?"":"s"}sampled`,});}});杩斿洖缁撴灉锛泒,7.娴嬭瘯鐢ㄤ緥缂栧啓锛氬皢澶氫釜娴嬭瘯鐢ㄤ緥浠g爜鍔犺浇鍒版暟缁勪腑鐒跺悗閫氳繃runfunctionrequire("../src").cases([{"RegExp#test":function(){/o/.test("HelloWorld!");},},{"String#indexOf":function(){"HelloWorld!".indexOf("o")>-1;},},{"String#match":function(){!!"HelloWorld!".match(/o/);},},]).run({async:true});8.姣忕鎵ц娆℃暟鏇撮珮鐨勬祴璇曠粨鏋滈瑙圱he娴嬭瘯鐢ㄤ緥鏄渶浼樼殑锛屾垜浠彲浠ョ湅鍒帮紝鏌ユ壘瀛楃鐨勬渶浼樻柟妗堟槸浣跨敤indexOf鍑芥暟锛屼綘杩欐牱鍋氫簡鍚楋紵鏂囩珷婧愮爜锛歜enchmark-javascript鍏朵粬瑙e喅鏂规锛歫sbench锛歐eb鐗坆enchmark娴嬭瘯锛屽畼缃戝睍绀篒nspiredbyBenchmark.js銆丣sperf.com鍜孞sfiddle.com.jsperf锛氬簲璇ユ槸鑰佺墝鐨刡enchmarking缃戠珯锛屾湇鍔″櫒鐩墠500锛屼竴鐩存墦涓嶅紑锛屽彲浠ュ湪Github涓婅嚜宸辨惌寤轰娇鐢ㄣ€傛杩庡叧娉ㄦ垜鐨勫叕浼楀彿鈥滃墠绔皬鏂板悓瀛︹€濓紝鍘熷垱鎶€鏈枃绔犵涓€鏃堕棿鎺ㄩ€併€?/p>
