我决定在排序测试中将速度 C++ std::vector 与 C# List 进行比较。所以我用 2 700 000 个相同的字符串填充它们并测量排序时间。
它看起来像这样:
C++:
std::vector<std::string> CPPList;
std::ifstream file("words-back.txt");
std::string word;
while(std::getline(file, word))
{
CPPList.push_back(word);
}
file.close();
Profiler profiler;
profiler.Start();
std::sort(CPPList.begin(),CPPList.end ());
profiler.Stop();
C#:
string[] lista = File.ReadAllLines("words-back.txt").ToArray();
List<string> CSList = new List<string>();
foreach (string element in lista)
{
CSList.Add(element);
}
Stopwatch timer = Stopwatch.StartNew();
CSList.Sort( );
timer.Stop();
结果让我大吃一惊,以至于我不得不问你发生了什么事。C++ 需要 0.7 秒,而 C# 需要 25 秒。我确实输出了带有排序字符串的文件,以确保排序正确完成并且是正确的。
我的问题是:为什么 C# 比 C++ 长这么多。
对不起,在我吃一个零之前,这个文件中的字符串不是 270 000 而是 2 700 000,