设为首页 加入收藏

TOP

31.5.4. 性能
2013-10-07 00:33:32 来源: 作者: 【 】 浏览:59
Tags:31.5.4. 性能

31.5.4. 性能

既然我们已经看过了优化的实现机制,最好确信它真的值得花费这么多精力。为了演示优化的块拷贝版本和原来版本之间的性能差异,我这样设计测试程序:创建一个ACE_Message_Queue实例并向其中添加一些块,然后用std::copy()从一个char数组拷贝内容,再拷贝回另一个数组(还是用std::copy()),最后验证两个数组中的内容是一致的。块的数目从1到10都有,块的大小在10到10000之间。通过使用PlatformSTL的组件performance_counter,分别计算从源数组拷贝到序列,以及从序列拷贝到目标数组的时间。为了得到毫秒精度的测量值,每种拷贝操作重复20000次。本章在CD上的补充材料包含完整代码。

表31.1中是有代表性的测试结果,表示为相对于非优化版本运行时间(毫秒为单位)的百分比。不出所料,当块非常小时,差距可以忽略;将块的大小增长到100,优化版本胜出,但优势不大;然而,当把块的大小设为更有现实意义的1000和10000时,简直就不用再比了——优化版本领先幅度高达40到50倍。

31.1. 各种块拷贝的相对性能< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

数组到迭代器

迭代器到数组

块数目

块大小

非优化版本

优化版本

%

非优化版本

优化版本

%

1

10

7

6

85.7%

7

9

128.6%

2

10

9

8

88.9%

9

7

77.8%

5

10

16

10

62.5%

16

10

62.5%

10

10

27

14

51.9%

26

14

53.8%

1

100

25

7

28.0%

23

7

30.4%

2

100

46

9

19.6%

42

9

21.4%

5

100

108

14

13.0%

99

14

14.1%

10

100

211

23

10.9%

188

23

12.2%

1

1,000

207

10

4.8%

184

11

6.0%

2

1,000

416

16

3.8%

391

17

4.3%

5

1,000

1,025

32

3.1%

898

32

3.6%

块数目

块大小

非优化版本

优化版本

%

非优化版本

优化版本

%

10

1,000

2,042

60

2.9%

1,793

61

3.4%

1

10,000

2,038

29

1.4%

1,786

29

1.6%

2

10,000

4,100

101

2.5%

3,570

101

2.8%

5

10,000

4,143

109

2.6%

3,606

101

2.8%

10

10,000

4,103

102

2.5%

3,573

102

2.9%


回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇31.5.3. 特化标准库 下一篇Visual C++ 6.0完全自学宝典 前言

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: