UnityContainer Performance测试结果
|
作为有关统一性的基本介绍的一部分,我创建了以下控制台应用程序(有点长):
IUnityContainer container = new UnityContainer();
container.RegisterType<ISimpleClass, SimpleClass>();
container.RegisterType<ISingletonWithUnity, SingletonWithUnity>(new ContainerControlledLifetimeManager());
double N = 10000;
double sum = 0;
Console.WriteLine(\"Testing performace of a basic new object\");
for (int i = 0; i < N; i++)
{
DateTime start = DateTime.Now;
ISimpleClass simpleClass = new SimpleClass();
DateTime end = DateTime.Now;
sum += (end - start).Milliseconds;
}
double average = sum/N;
Console.WriteLine(\"Average time for basic new object is: \" + average);
Console.WriteLine(\"Testing performance of transient resolve using unity\");
sum = 0;
for (int i = 0; i < N; i++)
{
DateTime start = DateTime.Now;
ISimpleClass simpleClass = container.Resolve<SimpleClass>();
DateTime end = DateTime.Now;
sum += (end - start).Milliseconds;
}
average = sum / N;
Console.WriteLine(\"Average time for transient resolve using unity is: \" + average);
Console.WriteLine(\"Testing performance of basic singleton\");
sum = 0;
for (int i = 0; i < N; i++)
{
DateTime start = DateTime.Now;
BasicSingltonClass basicSingltonClass = BasicSingltonClass.Instance;
DateTime end = DateTime.Now;
sum += (end - start).Milliseconds;
}
average = sum / N;
Console.WriteLine(\"Average time for basic singleton is: \" + average);
Console.WriteLine(\"Testing performance of unity singleton\");
sum = 0;
for (int i = 0; i < N; i++)
{
DateTime start = DateTime.Now;
SingletonWithUnity singletonWithUnity = container.Resolve<SingletonWithUnity>();
DateTime end = DateTime.Now;
sum += (end - start).Milliseconds;
}
average = sum / N;
Console.WriteLine(\"Average time for unity singleton is: \" + average);
测试中使用的类非常简单:
SimpleClass只是一个空类
BasicSingletonClass正是使用实例getter上的常规Double Checked Locking进行的操作。
SingletonWithUnity也是一个空类,但是您可以看到它是在ContainerControlleredLifetimeManager中注册的。
随着N的增加(达到一百万),我得到的结果表明使用统一实际上比不使用统一要慢得多。我曾经认为Unity具有某种形式的解析缓存,因此可以使其更快得多,尤其是在瞬态解析中。
这是当N设置为10,000时运行性能测试应用程序的结果的示例:
测试基本新对象的性能
基本新对象的平均时间为:0.0007
使用unity测试瞬态解析的性能
使用单位进行瞬态解析的平均时间为:0.008
基本单例测试性能
基本单身人士的平均时间为:0.0012
测试单身人士的表现
单身人士的平均时间是:0.0033
按任意键继续 。 。 。
如您所见,使用Unity会对性能产生影响。
我想就您在幕后发生的事情获得您的诚实意见,以解释这些结果。
提前致谢!
没有找到相关结果
已邀请:
2 个回复
号拳藐孔妇
社攻取墟槽