From 710265bae23ad5860f33287fba10b5c369f19a93 Mon Sep 17 00:00:00 2001 From: Sigurd Meldgaard Date: Thu, 16 Jan 2025 14:43:42 +0100 Subject: [PATCH] Cache canonicalized version of paths in path dependencies (#4495) --- lib/src/source/path.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/src/source/path.dart b/lib/src/source/path.dart index 921e95e59..a33eba95f 100644 --- a/lib/src/source/path.dart +++ b/lib/src/source/path.dart @@ -270,6 +270,9 @@ class PathDescription extends Description { final String path; final bool relative; + // Canonicalization is rather slow - cache the result; + late final String _canonicalizedPath = canonicalize(path); + PathDescription(this.path, this.relative) : assert(!p.isRelative(path)); @override String format() { @@ -294,11 +297,11 @@ class PathDescription extends Description { @override bool operator ==(Object other) { return other is PathDescription && - canonicalize(path) == canonicalize(other.path); + _canonicalizedPath == other._canonicalizedPath; } @override - int get hashCode => canonicalize(path).hashCode; + int get hashCode => _canonicalizedPath.hashCode; } class ResolvedPathDescription extends ResolvedDescription {