无序集Visual Studio C++;慢 所以我认为有一个坏版本的C++,其中无序的集合非常慢。这段代码花了一分钟执行: int main() { unordered_set<int> blah; for (int i = 0; i < 1000000; ++i) { blah.insert(i); } cout << "done 2" << endl; return 0; } intmain(){ 杂乱无章的胡说八道; 对于(int i=0;iConfiguration properties->C/C++->Optimization->Maximize Speed(/O2)来启用优化。我的已设置为发行版,而不是调试版
这使得原始代码在大约一秒钟内运行,10000000变体在大约8秒钟内运行(因此仍然比调试模式下的C#慢约4倍).EDIT:似乎C#的速度在对这个特定程序进行调试或在发布模式下构建时,无论是否进行调试,都不会有太大的变化。关闭调试,然后打开优化。不进行调试,可以将其缩短到20秒……这很好。如何打开优化?此外,打开调试后C#的速度仍然是原来的200倍。等等(1000000)我也只是想弄清楚为什么C++的数量级比C级差。有很多方法让它稍微好一点,但是我希望有一个明确的答案来解释为什么无序的集合非常慢。即使把桶的数量设置为1000000,它仍然非常缓慢。在发布模式下构建。同时启用优化无序集Visual Studio C++;慢 所以我认为有一个坏版本的C++,其中无序的集合非常慢。这段代码花了一分钟执行: int main() { unordered_set<int> blah; for (int i = 0; i < 1000000; ++i) { blah.insert(i); } cout << "done 2" << endl; return 0; } intmain(){ 杂乱无章的胡说八道; 对于(int i=0;iConfiguration properties->C/C++->Optimization->Maximize Speed(/O2)来启用优化。我的已设置为发行版,而不是调试版,c++,visual-studio-2012,C++,Visual Studio 2012,这使得原始代码在大约一秒钟内运行,10000000变体在大约8秒钟内运行(因此仍然比调试模式下的C#慢约4倍).EDIT:似乎C#的速度在对这个特定程序进行调试或在发布模式下构建时,无论是否进行调试,都不会有太大的变化。关闭调试,然后打开优化。不进行调试,可以将其缩短到20秒……这很好。如何打开优化?此外,打开调试后C#的速度仍然是原来的200倍。等等(1000000)我也只是想弄清楚为什么C++的数量级比C级差。有很多方法让它稍微好一点,但是我希望有一个明确的答案来解释为什么无序的集合非常慢。
static void Main(string[] args)
{
HashSet<int> set = new HashSet<int>();
for (int i = 0; i < 10000000; ++i)
{
set.Add(i);
}
}