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

来源:互联网 发布:中国淘宝第一村浙江 编辑:程序博客网 时间:2024/06/07 00:46


分类: 架构设计.net开发 2009-11-07 16:25503人阅读 评论(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


原创粉丝点击