Closed damienwebdev closed 2 years ago
This should be done with caution. The Icon Component uses tuples so it might be that change detection doesn't work properly if somebody uses a tuple in the host component and changes the values inside without creating a new array.
This should be done with caution. The Icon Component uses tuples so it might be that change detection doesn't work properly if somebody uses a tuple in the host component and changes the values inside without creating a new array.
We already use ngOnChanges()
hook to re-render the icon, so I don't think that there will be a behavior change in this regard.
On the other hand, I don't expect this change to actually provide any noticeable performance improvement. At the moment fa-icon
uses only two trivial Angular bindings, so the change detection run is essentially two ===
operations per icon. I did a very quick and naive test using the new Angular DevTools extension with and without ChangeDetection.OnPush
and the change detection run (without inputs changes) for 500 icons took ~0.1ms in both cases. I might have done something wrong there, but I don't really expect this change to provide any noticeable improvement unless somebody renders an insane amount of icons on the page 😅
Maybe, for a v1, ImmutableFaIconComponent
as an experimental component?
I've got a few hundred of such icons on some pages and on the low-cpu devices we test on, a non-trivial amount of time (30ms) is spent just change detecting the leaf icons.
@damienwebdev Are you measuring a no-op change detection run or a change detection run, which actually updates the rendered icon? Because ChangeDetection.OnPush
can only help with the former, which should already be very fast.
I'm going to close it as stale and because I don't quite see how ChangeDetection.OnPush
can improve the performance for the fa-icon
component, but I'm happy to re-open it if somebody can provide evidence or an example showing otherwise.
Describe the problem you'd like to see solved or task you'd like to see made easier
Make
fa-icon
ChangeDetection.OnPushIs this in relation to an existing part of angular-fontawesome or something new?
fa-icon
What is 1 thing that we can do when building this feature that will guarantee that it is awesome?
Add some test cases that use a service to compute the number of times
ngAfterViewChecked
fires on thefa-icon
. After reviewing the component, it doesn't look like this would be a breaking change.Why would other angular-fontawesome users care about this?
Performance!
On a scale of 1 (sometime in the future) to 10 (absolutely right now), how soon would you recommend we make this feature?
10
Feature request checklist
Feature request: moar cowbell
)