请教一个有关C++效率的问题==C++11 VS C#

I7707557 2017-11-29 04:32:49
我是C#用的比较多的程序员,最近学习python和c++。由于我对c++的效率异常充满期待,因此非常留意c++的各类特性。
但在做效率对比时,我发现c++很慢,我承认我只是初级学生,可能哪里做的不对,或方式不正确,希望大牛帮我解答一下
同样的控制台代码和逻辑,建立在main函数中。都是向一个10000000的大数组内写入一个字符串
C++程序用了10多秒,而C#这种托管代码仅用了3秒,不知道为什么,我想,一定是我哪里做错了!
C++:
int main() {
constexpr int length = 10000000;
std::string sssss = "aaaaaaaa";
std::string *stringArrayTester = new std::string[length];
for (long i = 0; i < length; ++i)
stringArrayTester[i] = sssss;
}
C#:
int main() {
int length = 10000000;
string[] stringArrayTester = new string[length];
for (var i = 0; i < length; i++)
stringArrayTester [i] = "aaaaaaaa";
}
...全文
127 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
I7707557 2017-11-29
  • 打赏
  • 举报
回复
引用 2 楼 luciferisnotsatan 的回复:
这么比较没什么意义。你这代码里C++每次赋值都要进行一次sssss内容的复制,而C#里内部应该只考了个指针
结帖了,感谢你的帮助。我一个朋友告诉我需要以release模式编译,果然c++比c#快的不是一星半点了
I7707557 2017-11-29
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
你不用常量字符串aaaaaaaa,for循环中,每次都随机打乱生成一个字符串试试
结帖了,感谢你的帮助。我一个朋友告诉我需要以release模式编译,果然c++比c#快的不是一星半点了
I7707557 2017-11-29
  • 打赏
  • 举报
回复
首先感谢楼上两个大牛给出的初步意见,我也考虑好像是字符串地址相同,我修改代码如下,结果差距更大了 C++ std::string sssss = "kingman"; std::string *sssssp = &sssss; std::string *stringArrayTester = new std::string[length]; for (long i = 0; i < length; ++i) stringArrayTester[i] = *sssssp + std::to_string(i); C# for (var i = 0; i < length; i++) stringArrayTester[i] = sssssp + i.ToString();
luciferisnotsatan 2017-11-29
  • 打赏
  • 举报
回复
这么比较没什么意义。你这代码里C++每次赋值都要进行一次sssss内容的复制,而C#里内部应该只考了个指针
oyljerry 2017-11-29
  • 打赏
  • 举报
回复
你不用常量字符串aaaaaaaa,for循环中,每次都随机打乱生成一个字符串试试

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧