我比較下面的代碼在C + +和C#和C#(單聲道2.4)似乎更快。 C++代碼有什麼問題嗎?C#散列表與C++散列表
#include <map>
#include <string>
#include <iostream>
#include <ext/hash_map>
#include <boost/any.hpp>
int main()
{
//std::map<long, long> m;
// hash_map is a little bit faster
__gnu_cxx::hash_map<long, long> m;
for(long i = 0; i < 1000000; ++i)
{
m[i] = i;
}
}
和C#
using System;
using System.Collections;
public int Main()
{
Hashtable m = new Hashtable();
for(long i = 0; i < 1000000; ++i)
{
m[i] = i;
}
}
C#代碼實際上是兩倍的速度在同一臺機器上。
$ time ./a.out
real 0m1.028s
user 0m0.986s
sys 0m0.041s
$ time mono test.exe
real 0m0.603s
user 0m0.732s
sys 0m0.090s
您是否在開啓優化的情況下編譯了C++代碼? – csl 2009-10-27 23:19:06
另請注意,初始哈希映射大小可能不同。例如,如果C#較大,而C++版本較低,則可能很容易看到很大的差異。 – csl 2009-10-27 23:20:08
你有沒有試過Boost.Unordered? – Cogwheel 2009-10-27 23:20:49