跳到主內容

更多關於效能的想法

什麼是效能,以及為什麼效能很重要

什麼是效能?

#

效能是表演者的一組可量化的屬性。

在這種情況下,效能不是動作本身的執行;而是某物或某人表現得有多好。因此,我們使用形容詞高效的 (performant)。

雖然表現得有多好的部分通常可以用自然語言描述,但在我們有限的範圍內,重點是可以用實數量化的東西。實數包括整數和 0/1 二進位制數作為特殊情況。自然語言描述仍然非常重要。例如,一篇大量批評 Flutter 效能的文章,僅僅使用文字而沒有任何數字(可量化的值),仍然可能具有意義,並且可能產生巨大影響。選擇有限的範圍只是因為我們的資源有限。

描述效能所需的量通常被稱為指標。

為了在無數的效能問題和指標中導航,您可以根據表演者進行分類。

例如,此網站上的大部分內容都是關於 Flutter 應用程式效能的,其中表演者是 Flutter 應用程式。基礎設施效能對於 Flutter 也很重要,其中表演者是構建機器人和 CI 任務執行器:它們會嚴重影響 Flutter 整合程式碼更改的速度,從而提高應用程式的效能。

這裡,範圍被有意擴大到包括不僅僅是應用程式效能問題,因為它們可以共享許多工具,無論表演者是誰。例如,Flutter 應用程式效能和基礎設施效能可能共享相同的儀表板和類似的警報機制。

擴大範圍還可以包含傳統上容易被忽略的表演者。文件效能就是一個例子。表演者可以是 SDK 的 API 文件,指標可以是:找到 API 文件有用的讀者的百分比。

為什麼效能很重要?

#

回答這個問題不僅對於驗證效能方面的工作至關重要,而且對於指導效能工作以使其更有用至關重要。“為什麼效能很重要?”的答案通常也是“效能如何有用?”的答案。

簡單地說,效能很重要且有用,因為在範圍內,效能必須具有可量化的屬性或指標。這意味著

  1. 效能報告易於理解。
  2. 效能的歧義性很小。
  3. 效能可比較和可轉換。
  4. 效能是公平的。

並非說非效能或不可衡量的議題或描述不重要。它們旨在突出效能可以更有用的場景。

1. 效能報告易於理解

#

效能指標是數字。閱讀數字比閱讀一段文字容易得多。例如,工程師可能需要 1 秒鐘來從 1 到 5 的數字中獲取效能評級。可能需要相同的工程師至少 1 分鐘才能閱讀完整的 500 字反饋摘要。

如果有許多數字,很容易對其進行總結或視覺化以快速理解。例如,您可以檢視其直方圖、平均值、分位數等來快速理解數百萬個數字。如果某個指標有數千個數據點的歷史記錄,那麼您可以輕鬆繪製時間線來讀取其趨勢。

另一方面,擁有 n 個 500 字的文字幾乎保證需要 n 倍的時間來理解這些文字。分析數千個歷史描述,每個描述都有 500 個字,將是一項艱鉅的任務。

2. 效能的歧義性很小

#

擁有效能作為一組數字的另一個優勢是其沒有歧義。如果您希望動畫的效能為每幀 20 毫秒或 50 fps,那麼數字幾乎沒有不同的解釋空間。另一方面,用文字描述相同的動畫,有人可能會稱其為好,而另一些人可能會抱怨它很糟糕。同樣,相同的單詞或短語可能會被不同的人以不同的方式解釋。您可能會將 OK 幀速率解釋為 60 fps,而另一些人可能會將其解釋為 30 fps。

數字仍然可能存在噪聲。例如,每幀測量的時長可能是該幀的真實計算時間,加上 CPU/GPU 花費在一些無關工作上的隨機時間(噪聲)。因此,指標會波動。然而,數字的含義沒有歧義。而且,還有嚴格的理論和測試工具來處理這種噪聲。例如,您可以進行多次測量來估計隨機變數的分佈,或者您可以取多次測量的平均值,透過大數定律來消除噪聲。

3. 效能可比較和可轉換

#

效能數字不僅具有明確的含義,而且還具有明確的比較。例如,毫無疑問,5 大於 4。另一方面,弄清楚“優秀”是比“極佳”更好還是更差可能具有主觀性。同樣,您能弄清楚“史詩”比“傳奇”更好嗎?實際上,短語強烈超出預期在某些人的解釋中可能比極佳更好。只有在將強烈超出預期對映到 4,將極佳對映到 5 的定義之後,它才變得明確且可比較。

數字也可以使用公式和函式輕鬆轉換。例如,60 fps 可以轉換為每幀 16.67 毫秒。幀的渲染時間 x(毫秒)可以轉換為二進位制指示器 isSmooth = [x <= 16] = (x <= 16 ? 1 :0)。這種轉換可以複合或連結,因此您可以使用單個測量值獲得各種各樣的量,而不會增加噪聲或歧義。轉換後的量然後可以用於進一步的比較和理解。如果您處理的是自然語言,則幾乎不可能進行此類轉換。

4. 效能是公平的

#

如果問題依賴於冗長的文字來發現,那麼不公平的優勢將給予更冗長的人(更願意聊天或寫作)或更接近開發團隊的人,他們具有更大的頻寬和更低的聊天或面對面會議的成本。

透過使用相同的指標來檢測問題,無論使用者距離多遠或多麼沉默,我們都可以公平地對待所有問題。反過來,這使我們能夠專注於具有更大影響的正確問題。

如何使效能更有用

#

以下總結了此處討論的 4 個要點,從略有不同的角度來看

  1. 使效能指標易於理解。不要用大量的數字(或文字)淹沒讀者。如果有許多數字,請嘗試將它們總結成一組較小的數字(例如,將許多數字總結成單個平均數字)。僅當數字發生重大變化時才通知讀者(例如,峰值或迴歸時的自動警報)。

  2. 使效能指標儘可能地明確。定義數字使用的單位。精確描述如何測量數字。使數字易於重現。如果有很多噪聲,請嘗試顯示完整的分佈,或者透過彙總許多嘈雜的測量值來儘可能地消除噪聲。

  3. 使效能比較容易。例如,提供時間線以比較當前版本與舊版本。提供將一種指標轉換為另一種指標的方法和工具。例如,如果我們可以將記憶體增加和 fps 降低轉換為使用者減少或美元損失的收入,那麼我們可以比較它們並做出明智的權衡。

  4. 使效能指標監控儘可能廣泛的人群,以便沒有人被落下。