两段c++代码功能一样为什么运行时间差这么多???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两段c++代码功能一样为什么运行时间差这么多???相关的知识,希望对你有一定的参考价值。

在贴吧问过了,懒得再写一遍了
http://tieba.baidu.com/p/5314089886
谢谢

参考技术A 我看了你在贴吧上的代码。c++ stl中的string类型引入了copy-on-write技术,可以理解为“写时才拷贝”,举例:在代码中,A调用substr时是没有内存拷贝操作的,只是将A字符串中的一部分通过指针的方式赋值给了返回的B string变量。只要A和B不去修改字符串的内容,那他们可以说一直都指向同一块内存。这样在调用substr的时候就非常快。以上是你的帖子中别人的代码为什么更快的原因。而你的代码中虽然没有使用substr函数,但是你在调用compare比较函数的时候,compare函数的源和目的都是通过+进行连接的。而+是包括内存拷贝动作的,这比少调用一次substr函数节省的时间要长的多。所以,你的代码执行起来更慢。如果对此有兴趣,可以搜索一下copy-on-write技术的相关说明。

以上是关于两段c++代码功能一样为什么运行时间差这么多???的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C++ 中有这么多字符串类型?

为啥阅读要花这么多时间?

10KV单母线分段供电,两边的PT并列运行是啥意思?谢谢郭老师。您能讲一下PT工作原理?

推导函数,两段代码是一样滴结果!

c++虚函数问题,大神请进

为啥vb.net用的人这么少,而C#.net用的人那么多呢?