依赖注入性能测试(spring.net 和Enterprise Library)
来源:互联网 发布:中国淘宝第一村浙江 编辑:程序博客网 时间:2024/06/07 00:46
想在项目中大量使用依赖注入,故对其性能做了一个测试。
测试使用spring.net和微软企业库(Enterprise Library 4.1)来做依赖注入。
测试场景:
- 简单构造函数
- 对同一个对象生成10000次。
- 单例模式下,取得对象10000次。
- 复杂构造函数
- 对同一个对象生成10000次。
- 单例模式下,取得对象10000次。
测试环境:
CPU:Q9500
内存:4G
操作系统:windows7
spring.net: 1.20
Enterprise Library 4.1
测试方式:
每个场景单纯测试,排除相互影响,每次测试运行3次,取平均值。
测试结果:
简单构造函数,取对象运行1万次
单例模式下加载时间对比
不使用IOC
spring
企业库
加载容器
无
105
101
102
AVG
102.667
83
82
82
AVG
82.333
取得对象
无
4
4
4
AVG
4
56
56
57
AVG
56.333
总时间
无
109
105
106
AVG
106.667
139
138
140
AVG
139
非单例模型下
不使用IOC
spring
企业库
加载容器
无
86
88
88
AVG
87.333
76
76
78
AVG
76.667
取得对象
0
62
66
60
AVG
62.667
59
60
57
AVG
58.667
总时间
0
149
154
148
AVG
150.333
136
136
135
AVG
135.667
复杂构造函数,取对象运行1万次
单例模式下加载时间对比
不使用IOC
spring
企业库
加载容器
无
100
101
101
AVG
101.667
81
80
81
AVG
80.667
取得对象
无
5
4
4
AVG
4.333
56
56
57
AVG
56.333
总时间
无
105
105
106
AVG
105.667
138
137
138
AVG
137.667
非单例模型下
不使用IOC
spring
企业库
加载容器
无
88
87
87
AVG
87.333
76
77
77
AVG
76.667
取得对象
36
96
99
99
AVG
98
93
95
95
AVG
94.333
总时间
36
185
186
186
AVG
185.667
169
172
172
AVG
171
数据分析
- l 容器的加载,企业库要比spring快大约10-20微秒。
- l 获取对象在单例模式下,企业库比spring慢大约50微秒/10000次。(每次大约0.005微秒)
- l 获取对象在单例模式下,spring注入只需要4-5微秒/10000次。 (每次大约0.0005微秒)
- l 获取对象在非单例模式下, 属性注入比不使用相差50微秒/10000次。(每次大约0.005微秒)
总结
两种依赖注入方式性能不存在太多差异。即使在执行一万次的情况下,也不会超过50微秒,实际使用中我们可以完全忽略不计。
依赖注入比直接实例化会慢50微秒/10000次,在单例模式用spring的情况下只慢50微秒/10000次,实际使用中我们也可以完全忽略不计。
总得来说,依赖注入可以放心使用,对系统性能产生影响可以忽略不计。
测试源码下载:http://download.csdn.net/source/1798686
- 依赖注入性能测试(spring.net 和Enterprise Library)
- 依赖注入性能测试(spring.net 和Enterprise Library)
- 微软Enterprise Library 4.0将支持依赖注入
- spring.net基本使用:控制反转和依赖注入
- .NET 使用spring.net实现依赖注入
- .NET 反射和依赖注入
- spring.net依赖注入到Web页面
- Spring.net 依赖注入 简单例子
- Junit和spring整合,使用Spring托管对象进行依赖注入,方便测试
- spring依赖注入(DI)
- Spring 依赖注入(DI)
- Spring 依赖注入 (Dependencies)
- spring-DI(依赖注入)
- Spring依赖注入(DI)
- Spring:依赖注入(XML)
- Spring依赖注入(DI)
- Spring依赖注入(DI)
- Spring依赖注入(2)
- XSLT轻松入门第五章:XSLT运算符
- android eclipse快捷键
- 廊坊日报《米新江教学法获全国高校观摩考察团专家肯定》
- Audio
- 性能江湖中的那些问题(持续更新 8.3)
- 依赖注入性能测试(spring.net 和Enterprise Library)
- CentOS下安装subversion手记
- linux下配置vim
- 在64位的windows server 2003运行IIS6运行32位的.NET程序
- linux下的module_param()解释
- eclipse: the project can't be built until build path are resolved
- Camera
- 关于SqmUpload任务
- webkitgtk简单示例