Профилирование производительности Angular-приложения - критически важный процесс для выявления и устранения узких мест. Рассмотрим профессиональные подходы:
Установите расширение для Chrome/Firefox:
Всегда включайте в production:
import { enableProdMode } from '@angular/core';
enableProdMode();
Для выявления утечек памяти:
ng.profiler.timeChangeDetection({
record: true
});
@Component({
selector: 'app-example',
template: `...`,
changeDetection: ChangeDetectionStrategy.OnPush
})
import { ApplicationRef, NgZone } from '@angular/core';
constructor(appRef: ApplicationRef, zone: NgZone) {
const originalTick = appRef.tick;
appRef.tick = function() {
const before = performance.now();
const retVal = originalTick.apply(this, arguments);
const after = performance.now();
console.log('Change detection time:', after - before);
return retVal;
};
}
Для анализа размера бандлов:
npm install --save-dev webpack-bundle-analyzer
"budgets": [
{
"type": "bundle",
"name": "main",
"maximumWarning": "500kb"
}
]
Профилируйте в production-режиме
ng build --prod
Тестируйте на реальных устройствах
Особенно мобильные устройства
Измеряйте ключевые метрики:
Анализируйте:
trackByFn(index: number, item: any): number {
return item.id;
}
@Pipe({ name: 'calculate' })
export class CalculatePipe implements PipeTransform {
transform(value: number): number {
// Тяжелые вычисления
}
}
<cdk-virtual-scroll-viewport itemSize="50">
<div *cdkVirtualFor="let item of items">
{{item}}
</div>
</cdk-virtual-scroll-viewport>
эффективное профилирование Angular-приложения требует комплексного подхода - от анализа бандлов и Change Detection до измерения реальной производительности рендеринга. Используйте комбинацию инструментов Angular и браузера для полной картины производительности.