C#哈希表与C#x2B+;散列映射 我比较C++中的下面的代码,C和C(MUNO 2.4)看起来更快。C++代码有什么不对吗?< /P> #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#哈希表与C#x2B+;散列映射 我比较C++中的下面的代码,C和C(MUNO 2.4)看起来更快。C++代码有什么不对吗?< /P> #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#,c++,C#,C++,一些想法: 你在比较Mono和Boost < Mono和C++ + 使用哪种优化(默认或不设置)设置? < C++和C++版本的初始/默认哈希表大小是什么? 你是否尝试过与其他的C++散列图进行比较,比如? 记住不仅要看实时,还要看实际使用的CPU时间 需要编译C++代码,编译器优化打开,以进行公平的比较。否则,您将苹果与调试构建进行比较——编译器甚至不会尝试发出快速代码 GCC中,这将是>O3标志,开始。你编译了C++代码并优化了吗?也请注意,初始哈希映射大小可能不同。例如,如果C是较大

一些想法:

  • 你在比较Mono和Boost
  • < Mono和C++ + 使用哪种优化(默认或不设置)设置? < C++和C++版本的初始/默认哈希表大小是什么? <>你是否尝试过与其他的C++散列图进行比较,比如?
  • 记住不仅要看实时,还要看实际使用的CPU时间

需要编译C++代码,编译器优化打开,以进行公平的比较。否则,您将苹果与调试构建进行比较——编译器甚至不会尝试发出快速代码


<> GCC中,这将是>O3标志,开始。

你编译了C++代码并优化了吗?也请注意,初始哈希映射大小可能不同。例如,如果C是较大的,C++版本较低,你可能会看到很大的差异。你试过Booost?无序?你在做什么?C++二进制被剥离了吗?它是静态链接还是动态链接a.out file.Hi。我只是用gcc test.cc编译的。没有开关,什么都没有。也没有尝试使用默认大小,但是Mono/C的默认大小也不是很大。没有试着推进。无序。我用的旧软呢帽好像没有。我会看一个新的盒子(好的,或者我会安装它:-P)。我想知道Boost的速度有多快。没有启用MNO和C++的任何优化。我不确定桌子的尺寸,我得检查一下。考虑其他哈希表正是我想做的。是的,但即使是real+用户也更适合Mono。如果Boost的速度快得多,我会感到惊讶。我认为在过去几年中,hash_映射的实现并没有太大的改进。(顺便说一句,您的Linux安装程序可能有std::tr1::unordered_映射,这是另一个哈希容器实现…)
 using System;
 using System.Collections;

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

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

}
$ 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