我對Angular 1.x有性能問題。使用函數表達式和過濾器來獲取基於鍵的值是否有任何性能優勢?讓我用例子來解釋。角度性能 - 過濾器與函數表達式
我目前有一個複雜的角度應用程序,有許多過濾器用於獲取基於對象鍵的值。我的數據中有很多鍵/ ID引用,所以我使用過濾器來獲取基於鍵的字段值。
E.g. {{ ID123 | getField:'object':'field'}}
的自定義過濾器,然後將做一個異步調用(以DB),以獲得我基於關鍵(ID123)指定對象名稱,並返回我指定(而不是僅僅顯示鍵)領域。
我目前正在做一些性能清理的過程,並且我已經閱讀了很多有關避免過濾器的內容,因爲它們在性能上很受歡迎。我正在做的一件事是使用一次性綁定{{::ID123 | getField:'object':'field'}}
,但在某些情況下我不能這樣做(因爲我需要更新值)。
然後我在查看函數表達式而不是自定義過濾器,例如{{getField(ID123,'object','field')}}.
但我不確定它是否會獲得任何性能優勢。
你可以看到我比較兩者的plunker例子。
https://plnkr.co/edit/hlL2LSOGjq5HsImUyqyu?p=preview
會不會有任何性能優勢?還有沒有辦法測試或基準兩者之間的差異?
由於
「有沒有辦法測試b將兩者區別開來......「關於如何做到這一點有很多問題,包括[Stack Overflow上的這一個](http://stackoverflow.com/q/27396539/215552)。關於哪些性能優勢?由於您在每次調用過濾器或函數時都會進行異步調用,因此我猜測過濾器或函數不是您的瓶頸;這是異步調用。您應該考慮重構您的查詢,以便信息一次全部出現。 –
確保您瞭解摘要循環的工作方式。許多摘要可以在每個週期完成。讓異步調用每個摘要效率都不高 – charlietfl
我緩存異步調用,因此每個摘要循環都會檢查緩存,並且只在沒有緩存時才進行異步調用。至於性能,我更擔心過濾器引起的摘要調用次數。有些頁面有20-30個這些過濾器。所以在消化循環期間,他們都被調用。這些函數是否也在每個摘要循環中被調用? –