Say I have an ng-repeat with a big array.

When ng-repeat runs, it adds every element of that array to an isolated scope, as well as having the array itself in a scope. That means that $digest checks the entire array for changes, and on top of that, it checks *every individual element* in that array for changes.

See [this plunker](http://plnkr.co/edit/ui7HTm?p=preview) as an example of what I'm talking about.

In my use case, I never change a single element of my array so I don't need to have them watched. I will only ever change the entire array, in which case ng-repeat would re-render the table in it's entirety. (If I'm wrong about this please let me know..)

In an array of (say) 1000 rows, that's 1000 more expressions that I don't need evaluated.

**How can I deregister each element from the watcher while still watching the main array?**

Perhaps instead of deregistering I could have more control of my $digest and somehow skip each individual row?

This specific case is actually an example of a more general issue. I know that [$watch returns a 'deregisteration' function](https://groups.google.com/d/msg/angular/UFJ3_5VZsEI/w2pXyWvmcLoJ), but that doesn't help when a directive is registering the watches, which is most of the time.