gpt4 book ai didi

c# - C# 和 C++ 中字符串操作的不同基准

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:56 25 4
gpt4 key购买 nike

我有两个非常简单的 C++ 和 C# 代码在 C# 中

for (int counter = 0; counter < 100000; counter ++)
{
String a = "";
a = "xyz";
a = a + 'd';
a = a + 'c';
a = a + 'h';
}

在 C++ 中

for (int counter = 0; counter < 100000; counter ++)
{
string a = "";
a.append("xyz");
a = a + 'd';
a = a + 'c';
a = a + 'h';
}

奇怪的是 c# 代码的执行时间是 c++ 代码的 1/20。你能帮我找出为什么会这样吗?以及如何更改我的 C++ 代码以变得更快。

最佳答案

这可能是实现的一个怪癖。例如,一位优化器可能发现操作的结果没有被使用。或者一个人可能碰巧分配了一个足够大的字符串来添加三个额外的字符而无需重新分配,而另一个则没有。或者它可能是一百万个其他东西。

用“玩具”代码进行基准测试确实没有帮助。我不认为结果适用于任何现实情况。

这段代码有很多明显的优化,例如:

string a;
for (int counter = 0; counter < 100000; counter ++)
{
a = "xyz";
a.append(1, 'd');
a.append(1, 'c');
a.append(1, 'h');
}

通过重用缓冲区并避免额外的分配/复制/释放周期,这可能会产生巨大的不同。

关于c# - C# 和 C++ 中字符串操作的不同基准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12137323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com