实战经验:CString.Format性能探究

(47) 2023-10-20 20:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说实战经验:CString.Format性能探究,希望能够帮助你!!!。

问题

在编写性能攸关的应用的时候,往往会忽视一些看似普通函数的调用成本。今天以CString.Format为例进行探究。

在操作字符串时,我们会因为方便而选择使用CString对象,在格式化字符串时,我们会调用CString的Format方法。简单方便的背后,往往需要付出一定的代价。

我们来编写一个示例程序来说明。

首先在VS中创建一个控制台应用程序,编写以下三个函数,分别测试CString.Format,_tcscpy_s和_stprintf_s在大量调用的场景下的性能。

实战经验:CString.Format性能探究_https://bianchenghao6.com/blog__第1张

测试结果

实战经验:CString.Format性能探究_https://bianchenghao6.com/blog__第2张

从以上测试结果中,我们看到耗时最久的是CString.Format方法,其次是_stprintf_s,性能最优者为_tcscpy_s。但是从编写程序的方便性来说,CString内建的字符串操作方法众多,语法也比较简单,开发效率会更胜一筹。

在编写性能攸关的程序时,如果仅仅是因为编写程序方便而是用CString.Format的话,那结果就是:你自己写程序写爽了,用户在使用你的程序时,根本就不是那么一回事。要么是运行缓慢,要么是界面卡顿,要么是内存使用量暴涨(对象基础设施中因为私有数据成员和虚函数表而消耗更多的内存)。

另外

为了避免Debug和Release模式下,调试基础设施对程序施加的影响,这里的示例工程没有使用Debug模式测试,而是直接使用Release模式,用于模拟真实的产品环境。

总结

1) 人的生命由一段时间组成,倘若你的产品毫无意义的消耗了你的用户的时间,就等于浪费了他(她)的生命。

2) 性能攸关的场合,宁愿写程序的时候累一点,也要保证性能最优化。

3) 享受到的抽象便利越多,背后付出的代价(可能)也会更大。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复