Skip to content

Commit 55b71df

Browse files
committed
Measure module and type reference directive times
1 parent 3d63401 commit 55b71df

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/compiler/program.ts

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -754,10 +754,10 @@ namespace ts {
754754
let _compilerOptionsObjectLiteralSyntax: ObjectLiteralExpression | null | undefined;
755755

756756
let moduleResolutionCache: ModuleResolutionCache | undefined;
757-
let resolveModuleNamesWorker: (moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference) => ResolvedModuleFull[];
757+
let actualResolveModuleNamesWorker: (moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference) => ResolvedModuleFull[];
758758
const hasInvalidatedResolution = host.hasInvalidatedResolution || returnFalse;
759759
if (host.resolveModuleNames) {
760-
resolveModuleNamesWorker = (moduleNames, containingFile, reusedNames, redirectedReference) => host.resolveModuleNames!(Debug.checkEachDefined(moduleNames), containingFile, reusedNames, redirectedReference, options).map(resolved => {
760+
actualResolveModuleNamesWorker = (moduleNames, containingFile, reusedNames, redirectedReference) => host.resolveModuleNames!(Debug.checkEachDefined(moduleNames), containingFile, reusedNames, redirectedReference, options).map(resolved => {
761761
// An older host may have omitted extension, in which case we should infer it from the file extension of resolvedFileName.
762762
if (!resolved || (resolved as ResolvedModuleFull).extension !== undefined) {
763763
return resolved as ResolvedModuleFull;
@@ -770,16 +770,16 @@ namespace ts {
770770
else {
771771
moduleResolutionCache = createModuleResolutionCache(currentDirectory, x => host.getCanonicalFileName(x), options);
772772
const loader = (moduleName: string, containingFile: string, redirectedReference: ResolvedProjectReference | undefined) => resolveModuleName(moduleName, containingFile, options, host, moduleResolutionCache, redirectedReference).resolvedModule!; // TODO: GH#18217
773-
resolveModuleNamesWorker = (moduleNames, containingFile, _reusedNames, redirectedReference) => loadWithLocalCache<ResolvedModuleFull>(Debug.checkEachDefined(moduleNames), containingFile, redirectedReference, loader);
773+
actualResolveModuleNamesWorker = (moduleNames, containingFile, _reusedNames, redirectedReference) => loadWithLocalCache<ResolvedModuleFull>(Debug.checkEachDefined(moduleNames), containingFile, redirectedReference, loader);
774774
}
775775

776-
let resolveTypeReferenceDirectiveNamesWorker: (typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference) => (ResolvedTypeReferenceDirective | undefined)[];
776+
let actualResolveTypeReferenceDirectiveNamesWorker: (typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference) => (ResolvedTypeReferenceDirective | undefined)[];
777777
if (host.resolveTypeReferenceDirectives) {
778-
resolveTypeReferenceDirectiveNamesWorker = (typeDirectiveNames, containingFile, redirectedReference) => host.resolveTypeReferenceDirectives!(Debug.checkEachDefined(typeDirectiveNames), containingFile, redirectedReference, options);
778+
actualResolveTypeReferenceDirectiveNamesWorker = (typeDirectiveNames, containingFile, redirectedReference) => host.resolveTypeReferenceDirectives!(Debug.checkEachDefined(typeDirectiveNames), containingFile, redirectedReference, options);
779779
}
780780
else {
781781
const loader = (typesRef: string, containingFile: string, redirectedReference: ResolvedProjectReference | undefined) => resolveTypeReferenceDirective(typesRef, containingFile, options, host, redirectedReference).resolvedTypeReferenceDirective!; // TODO: GH#18217
782-
resolveTypeReferenceDirectiveNamesWorker = (typeReferenceDirectiveNames, containingFile, redirectedReference) => loadWithLocalCache<ResolvedTypeReferenceDirective>(Debug.checkEachDefined(typeReferenceDirectiveNames), containingFile, redirectedReference, loader);
782+
actualResolveTypeReferenceDirectiveNamesWorker = (typeReferenceDirectiveNames, containingFile, redirectedReference) => loadWithLocalCache<ResolvedTypeReferenceDirective>(Debug.checkEachDefined(typeReferenceDirectiveNames), containingFile, redirectedReference, loader);
783783
}
784784

785785
// Map from a stringified PackageId to the source file with that id.
@@ -976,6 +976,22 @@ namespace ts {
976976

977977
return program;
978978

979+
function resolveModuleNamesWorker(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference) {
980+
performance.mark("beforeResolveModule");
981+
const result = actualResolveModuleNamesWorker(moduleNames, containingFile, reusedNames, redirectedReference);
982+
performance.mark("afterResolveModule");
983+
performance.measure("ResolveModule", "beforeResolveModule", "afterResolveModule");
984+
return result;
985+
}
986+
987+
function resolveTypeReferenceDirectiveNamesWorker(typeDirectiveNames: string[], containingFile: string, redirectedReference?: ResolvedProjectReference) {
988+
performance.mark("beforeResolveTypeReference");
989+
const result = actualResolveTypeReferenceDirectiveNamesWorker(typeDirectiveNames, containingFile, redirectedReference);
990+
performance.mark("afterResolveTypeReference");
991+
performance.measure("ResolveTypeReference", "beforeResolveTypeReference", "afterResolveTypeReference");
992+
return result;
993+
}
994+
979995
function compareDefaultLibFiles(a: SourceFile, b: SourceFile) {
980996
return compareValues(getDefaultLibFilePriority(a), getDefaultLibFilePriority(b));
981997
}

0 commit comments

Comments
 (0)