並べ替えテストで 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++ よりもずっと長くするのかということです。
申し訳ありませんが、ゼロを 1 つ食べる前は、このファイルでは 270 000 ではなく 2 700 000 文字列でした。