2016-07-31 38 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