I've got a ng-repeat directive with some filters on it and massive DOM inside each repetition. For example:
<li ng-repeat='task in tasks'>
<!--Some DOM with many bindings-->
ng-repeat='task in tasks track by task.id'
These are not mutually exclusive constructs and both have different uses.
track by simply allows Angular to better manage the DOM when items are added or removed. By default, it uses a hash of the entire object, which can be slow and inefficient compared to a simple atomic value.
Using one time binding syntax however simply reduces the number of total watches in the application. This makes the app more responsive when performing updates because it has less things to watch.