Skip to content

Commit 188c3b7

Browse files
authored
Measure module and type reference directive times (microsoft#37054)
1 parent e804dc8 commit 188c3b7

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.
@@ -977,6 +977,22 @@ namespace ts {
977977

978978
return program;
979979

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

0 commit comments

Comments
 (0)