我需要在我的代码中使用System.Collections.Immutable ImmutableStack<T>
但是我注意到自从使用它以来性能受到了一些影响。我想知道是否有替代方案可以提供更好的性能?
我测试Stack<T>
了ImmutableStack<T>
以下内容
static void Main(string[] args)
{
const int c_loopCount = 10000000;
var watch = new Stopwatch();
watch.Start();
ImmutableStack<int> immStack = ImmutableStack<int>.Empty;
for (int i = 0; i < c_loopCount; i++)
{
immStack = immStack.Push(i);
}
watch.Stop();
TimeSpan ts = watch.Elapsed;
string elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}";
Console.WriteLine($"ImmutableStack<T> RunTime {elapsedTime}");
var watch2 = new Stopwatch();
watch2.Start();
var normalStack = new Stack<int>();
for (int i = 0; i < c_loopCount; i++)
{
normalStack.Push(i);
}
TimeSpan ts2 = watch2.Elapsed;
string elapsedTime2 = $"{ts2.Hours:00}:{ts2.Minutes:00}:{ts2.Seconds:00}.{ts2.Milliseconds / 10:00}";
Console.WriteLine($"Stack<T> RunTime {elapsedTime2}");
Console.ReadLine();
}
平均Stack<T>
比 . 快约 20%-25% ImmutableStack<T>
。我在整个应用程序中都使用它,因此性能损失会造成损失。它需要是一个堆栈并且它需要是不可变的。关于可以采取哪些措施来提高这种性能,有什么建议吗?