我在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)
您需要在打开编译器优化的情况下编译C++代码,以进行公平比较.否则,您正在将苹果与调试版本进行比较 - 编译器甚至不会尝试发出快速代码.
在海湾合作委员会中,这将是-O3开始时的旗帜.
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |