C#Hashtable vs c ++ hash_map

pab*_*blo 0 c# c++

我在C++和C#中比较以下代码,而C#(Mono 2.4)似乎更快.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;
    }

 }
Run Code Online (Sandbox Code Playgroud)

和C#

 using System;
 using System.Collections;

 public int Main()
 {
     Hashtable m = new Hashtable();

     for( long i = 0; i < 1000000; ++i )
     {
        m[i]  = i;
     }

}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Cra*_*rks 8

您需要在打开编译器优化的情况下编译C++代码,以进行公平比较.否则,您正在将苹果与调试版本进行比较 - 编译器甚至不会尝试发出快速代码.

在海湾合作委员会中,这将是-O3开始时的旗帜.

  • ooooops !!!! 它成功了:真正的0m0.207s用户0m0.162s sys 0m0.044s (2认同)