I compared the performance of both in a view with large nested lists (up to 1000 entries, 4 levels deep).
Conclusion
Directives are between 50 - 100% faster than ng-include
when it comes to rendering large data structures. If you have to render a lot of complex/nested data, especially recursive stuff - go with directives.
Also for functional elements (widgets, filter inputs, etc.) directives are more applicable because your logic is within your module and not floating around somewhere in your controller.
For more reference on recursion see here: Recursion in Angular directives
When you're just trying to divide your application into logical sections (header, sidebar, etc.) ng-include
is probably better. One thing to keep in mind is that it's easier to access the controller's scope via ng-include
. With directives this can get a bit tricky sometimes.