要想實現遊戲陪玩app原始碼的效能測試與調優,應該怎麼做?
前言
還記得當年,被面試官問到如何測試遊戲陪玩app原始碼某個運算的速度(執行時間),我是這樣回到的。
var start = (new Date()).getTime(); // 或者Date.now() // 進行一些操作之後 var end = (new Date()).getTime(); console.log( "Duration:", (end - start) );
但是這種方案是錯誤的哦
為什麼呢?
這個運算的這次特定的執行消 耗了大概這麼長時間。而它是不是總是以這樣的速度執行,你基本上一無所知。你不知道遊戲陪玩app原始碼在這個時候有沒有受到什麼影響,以及其他時候這個運算會不會執行得更快。這樣低置 信度的測試幾乎無力支援你的任何決策。這個遊戲陪玩app原始碼效能測試基本上是無用的。
重複很多人可能會用一個迴圈把它包起來,這樣整個遊戲陪玩app原始碼測試的執行時間就會更長 一些了。如果重複一個運算 100 次,然後整個迴圈報告共消耗了 137ms,那你就可以把 它除以 100,得到每次運算的平均用時為 1.37ms,但是是不對得。
簡單的數學平均值絕對不足以對你要外推到整個遊戲陪玩app原始碼範圍的效能作出判斷。迭代 100 次, 即使只有幾個(過高或過低的)的異常值也可以影響整個平均值,然後在重複應用這個結 論的時候,你還會擴散這個誤差,產生更大的欺騙性。
Benchmark.js我並不打算複述他們的整個文件來介紹 Benchmark.js 如何運作。他們的 API 很不錯,你 應該讀一讀。還有一些很棒的文章介紹了更多的細節和方法。
function foo() { // 要測試的運算}var bench = new Benchmark( "foo test", // 測試名稱 foo, // 要測試的函式(也即內容) { // .. // 可選的額外選項(參見文件) }); bench.hz; // 每秒運算數 bench.stats.moe; // 出錯邊界 bench.stats.variance; // 樣本方差 // ..
環境為王
遊戲陪玩app原始碼測試條件與你期望的真實情況越接近越好。只有這 樣得出的結果才有可能接近事實。
jsPerf.com
jsPerf 們前面介紹的 Benchmark.js 庫來執行統計上精確可靠的測試,並把測試結果放在一個公開 可得的 URL 上,你可以把這個 URL 轉發給別人。
寫好測試
要寫好遊戲陪玩app原始碼測試,需要認真分析和思考兩個測試用例之間有什麼區別,以及這些區別是有意還 是無意的。
不要試圖窄化到真實程式碼的微小片段,以及脫離上下文而只測量這一小部分的效能,因為 包含更大(仍然有意義的)上下文時遊戲陪玩app原始碼功能測試和效能測試才會更好。這些測試可能也會運 行得慢一點,這意味著環境中發現的任何差異都更有意義。
微效能
很多時候,我們通過程式碼得手段做的遊戲陪玩app原始碼一些效能上的優化可能在引擎眼中差異並不是非常大,譬如++i喝i++這樣的行為。
不是所有的引擎都類似遊戲陪玩app原始碼引擎可以自由決定一個運算是否需要優化,可能進行權衡,替換掉運算次要效能。對一個 運算來說,很難找到一種方法使其在所有瀏覽器中都執行得較快。
大局怎麼知道什麼是大局呢?首先要了解你的遊戲陪玩app原始碼程式碼是否執行在關鍵路徑上。如果不在關鍵路徑 上,你的優化就很可能得不到很大的收益。
尾呼叫優化尾呼叫就是一個出現在另一個函式“結尾”處的函式呼叫。這個呼叫結束後就沒有其餘事情要做了。
非遞迴的尾呼叫:
function foo(x) { return x;}function bar(y) { return foo(y + 1); // 尾呼叫}function baz() { return 1 + bar(40); // 非尾呼叫 }baz(); // 42
foo(y+1) 是 bar(…) 中的尾呼叫,因為在 foo(…) 完成後,bar(…) 也完成了,並且只需要 返回 foo(…) 呼叫的結果。然而,bar(40) 不是尾呼叫,因為在它完成後,它的結果需要加 上 1 才能由 baz() 返回。
小結
-
對遊戲陪玩app原始碼一段程式碼進行有效的效能測試,特別是與同樣程式碼的另外一個選擇對比來看看哪種方案更快,需要認真注意細節;
-
尾呼叫優化是 ES6 要求的一種優化方法,它使 JavaScript 中原本不可能的一些遞迴模式變 得實際。
本文轉載自網路,轉載僅為分享乾貨知識,如有侵權歡迎聯絡雲豹科技進行刪除處理
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2794940/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遊戲陪玩原始碼的移動端適配,應該如何實現?遊戲原始碼
- 測試遊戲陪玩app開發中的啟動效能,需要這樣做遊戲APP
- 如何實現遊戲陪玩系統原始碼前端效能監控?遊戲原始碼前端
- 遊戲陪玩app原始碼開發,啟動速度優化與監控遊戲APP原始碼優化
- 遊戲陪玩APP遊戲APP
- 如何在遊戲陪玩app原始碼中實現簡訊驗證碼登入?遊戲APP原始碼
- 遊戲陪玩app原始碼開發,常用的倒數計時功能如何實現?遊戲APP原始碼
- 陪玩原始碼下單介面調優實戰,提高效能的好辦法原始碼
- 遊戲陪玩原始碼前端效能優化,開發階段可採取的措施遊戲原始碼前端優化
- 從比心APP原始碼的成功,分析陪玩系統原始碼應該如何開發APP原始碼
- 遊戲陪玩app原始碼的可靠訊息最終一致性方案的實現遊戲APP原始碼
- 遊戲陪玩app開發,前端實現一個輪詢需要如何做?遊戲APP前端
- 遊戲陪玩系統原始碼開發,如何實現圖片和動畫的優化?遊戲原始碼動畫優化
- 什麼是遊戲陪玩app原始碼開發的過度設計,如何避免?遊戲APP原始碼
- 遊戲陪玩app開發,訊息可靠性的實現遊戲APP
- 遊戲陪玩原始碼的登入方式,簡訊驗證碼登入的實現遊戲原始碼
- 遊戲陪玩app開發中,Mysql的sql優化方法遊戲APPMySql優化
- 做好陪玩系統原始碼的前端效能優化,提升系統效能原始碼前端優化
- 如何在遊戲陪玩系統原始碼中實現“刮刮樂”效果?遊戲原始碼
- 在遊戲陪玩系統開發中,如何進行效能測試?遊戲
- 如何進行遊戲陪玩系統原始碼中音視訊的自動化測試?遊戲原始碼
- 效能測試調優應該注意哪些要點,一般效能測試調優的步驟-Alltesting|澤眾雲測試
- 遊戲登陸主機的認證測試該怎麼做?遊戲
- 遊戲陪玩原始碼前端圖片載入優化的各種技巧遊戲原始碼前端優化
- 相親原始碼的效能為何這麼重要,該怎樣實現優化?原始碼優化
- 【效能調優】效能測試、分析與調優基礎
- 遊戲陪玩平臺原始碼開發,依賴收集和觸發的實現遊戲原始碼
- 遊戲陪玩系統原始碼中不同排序演算法的實現方式遊戲原始碼排序演算法
- 入行掃盲貼:<遊戲分析與評測>該怎麼做?遊戲
- 2024年遊戲買量應該怎麼玩?遊戲
- 軟體效能測試分析與調優實踐之路-Java應用程式的效能分析與調優-手稿節選Java
- 效能測試實踐 | PerfDog 助力微信小遊戲 / 小程式效能調優遊戲
- 效能測試實踐 | PerfDog助力微信小遊戲/小程式效能調優遊戲
- 效能測試之測試分析與調優
- 遊戲陪玩系統原始碼中懶載入的實現方式有哪幾種?遊戲原始碼
- 白盒測試程式碼應該怎麼測試
- 遊戲陪玩平臺原始碼,日期格式化的程式碼分析遊戲原始碼
- nvidia控制皮膚怎麼設定玩遊戲最好 nvida控制皮膚怎麼調玩遊戲效能最佳遊戲