# Turn off computed properties/observers for large data sets

**URL:** <https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992>\
**Category:** Performance\
**Created:** [July 31, 2013, 8:11pm UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992 "2013-07-31T20:11:22Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![moger777](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/moger777/32/14722_2.png) [@moger777](https://discuss.emberjs.com/u/moger777)\
**Post date:** [July 31, 2013, 8:11pm UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992/1 "2013-07-31T20:11:22Z")

</div>

When loading large data sets (outside of ember-data), it seems that every little property change triggers a computed property or observer. Is it possible to defer these changes to the very end of the data load?

---

<div class="post-metadata">

**Author:** ![pwagenet](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/pwagenet/32/14172_2.png) [@pwagenet](https://discuss.emberjs.com/u/pwagenet)\
**Post date:** [July 31, 2013, 11:47pm UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992/2 "2013-07-31T23:47:11Z")

</div>

This really depends largely on how you have your app architected. Property changes are deferred until the end of the RunLoop and are coalesced. However, at the moment, observers trigger immediately and will trigger multiple times for property changes that would otherwise be coalesced in a single run loop. Also, if you have an observer on a CP, that CP won’t be lazily computed because the observer will get the value immediately. We’re planning to make observers coalesce and trigger at the end of the RunLoop which might improve your scenario.

---

<div class="post-metadata">

**Author:** ![fanta](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/fanta/32/14645_2.png) [@fanta](https://discuss.emberjs.com/u/fanta)\
**Post date:** [August 1, 2013, 2:17pm UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992/3 "2013-08-01T14:17:28Z")

</div>

@pwagenet, making observers run at the of the RunLoop will be awesome, we will gain significant performance improvements in our apps. Btw, @moger777 you could use Em.run.once in some of your observes, it depends on how you have architected your app, but that could help.

---

<div class="post-metadata">

**Author:** ![pwagenet](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/pwagenet/32/14172_2.png) [@pwagenet](https://discuss.emberjs.com/u/pwagenet)\
**Post date:** [August 13, 2013, 4:25am UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992/4 "2013-08-13T04:25:39Z")

</div>

> [@fanta](#):
>
> Btw, @moger777 you could use Em.run.once in some of your observes, it depends on how you have architected your app, but that could help.

I’ve definitely done this in some cases. It can be a very effective workaround until we have proper support for asynchronous observers.

---

<div class="post-metadata">

**Author:** ![pratuat](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/pratuat/32/9795_2.png) [@pratuat](https://discuss.emberjs.com/u/pratuat)\
**Post date:** [September 12, 2015, 3:14pm UTC](https://discuss.emberjs.com/t/turn-off-computed-properties-observers-for-large-data-sets/1992/5 "2015-09-12T15:14:37Z")

</div>

One small point to note is not to pass an anonymous function but a function handle while calling Ember.run.once. It threw me off for a while.
