diff --git a/src/Workspaces/Core/Portable/Utilities/EditDistance.cs b/src/Workspaces/Core/Portable/Utilities/EditDistance.cs index a4a1135caece43fc018f0f5a98f43b12402426e6..dc58c1ee8c58362bd47ca109bc169fb101eaac9d 100644 --- a/src/Workspaces/Core/Portable/Utilities/EditDistance.cs +++ b/src/Workspaces/Core/Portable/Utilities/EditDistance.cs @@ -108,8 +108,9 @@ public int GetEditDistance(string target, int threshold = int.MaxValue) private static readonly ThreadLocal t_matrixPool = new ThreadLocal(() => InitializeMatrix(new int[MaxMatrixPoolDimension, MaxMatrixPoolDimension])); - private static ThreadLocal> t_dictionaryPool = - new ThreadLocal>(() => new Dictionary()); + private const int LastSeenIndexLength = 128; + private static ThreadLocal t_lastSeenIndexPool = + new ThreadLocal(() => new int[LastSeenIndexLength]); private static int[,] GetMatrix(int width, int height) { @@ -487,8 +488,8 @@ private static int GetEditDistanceWorker(ArraySlice source, ArraySlice source, ArraySlice source, ArraySlice