2016-07-31 39 views
1

的文檔中提到主叫從控制器和服務,這是一個貨幣濾波器過濾器的2種方式:通過觀察的角度的源代碼

$filter('currency') 

currencyFilter 

,我看到首先用名稱+後綴調用注射器將其返回。也就是說,對於經常被調用的過濾器或過濾器的強烈使用,這是否會對性能產生影響? 我的想法是,如果你通過2種方式注入,你可以參考過濾功能,並可以直接使用它。而在第一種方式中,每次需要使用過濾器時都會調用注射器。可以說你會把它放在一個被稱爲經常的觀察者中,我感覺這裏可能有一個perf漏斗。 對此有何意見? Jsperf似乎一直在等到他們發佈v2,但也許有人已經有了答案?

回答

1

$filter確實是getting a service from injector。噴油器的開銷可以忽略不計。

這個問題可以被認爲是初步優化。應用程序中有些地方對性能更重要,需要更多關注。

如果過濾器用於許多觀察者或摘要可能每秒觸發很多次,這提供了更明顯的瓶頸和優化點,而不是如何應用過濾器。

+0

當然,還有其他的瓶頸需要調查,當然我在查詢之前看過角度源代碼。這只是一個好奇心,我希望得到一些性能比較或類似的東西 – Sephy

+0

服務實例'$ injector.get'只是[讀取緩存對象屬性](https://github.com/angular/angular。 js/blob/v1.5.8/src/auto/injector.js#L812-L818),所以這應該是您最擔心的問題。順便說一下,你可以設置本地jsperf [v1](https://github.com/mathiasbynens/jsperf.com)或[v2](https://github.com/jsperf/jsperf.com)副本。 – estus