依赖注入性能测试(spring.net 和Enterprise Library)

前端之家收集整理的这篇文章主要介绍了依赖注入性能测试(spring.net 和Enterprise Library)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


分类架构设计 .net开发 2009-11-07 16:25 503人阅读 评论(1) 收藏 举报

想在项目中大量使用依赖注入,故对其性能做了一个测试。

测试使用spring.net和微软企业库(Enterprise Library 4.1)来做依赖注入。

测试场景:

  1. 对同一个对象生成10000次。
  2. 单例模式下,取得对象10000次。
  1. 对同一个对象生成10000次。
  2. 单例模式下,取得对象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

猜你在找的设计模式相关文章