相关疑难解决方法(0)

C++ vs Java?为什么ICC生成的代码比VC慢?

以下是C++中的一个简单循环.计时器使用QueryPerformanceCounter()并且非常准确.我发现Java需要60%的时间用C++,这不可能是什么?!我在这做错了什么?即使是严格的别名(这里没有包含在代码中)也没有任何帮助......

long long var = 0;
std::array<int, 1024> arr;
int* arrPtr = arr.data();
CHighPrecisionTimer timer;

for(int i = 0; i < 1024; i++) arrPtr[i] = i;

timer.Start();

for(int i = 0; i < 1024 * 1024 * 10; i++){
    for(int x = 0; x < 1024; x++){
        var += arrPtr[x];
    }
}

timer.Stop();

printf("Unrestricted: %lld us, Value = %lld\n", (Int64)timer.GetElapsed().GetMicros(), var);
Run Code Online (Sandbox Code Playgroud)

这个C++在大约9.5秒内完成.我正在使用英特尔编译器12.1与主机处理器优化(特别是我的)和一切最大化.所以这是英特尔编译器的最佳选择!自动并行化有趣地消耗70%的CPU而不是25%但是不能更快地完成工作;)...

现在我使用以下Java代码进行比较:

    long var = 0;
    int[] arr = new int[1024];

    for(int i = 0; i < 1024; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ java performance

45
推荐指数
4
解决办法
4828
查看次数

为什么Cassandra用Java编写?

关于Cassandra的 问题

为什么地球上的任何人都会用Java编写数据库ENGINE?
我可以理解为什么你想要一个Java接口,但引擎......

我的印象是没有什么比C/C++更快,并且数据库引擎不应该比最大速度慢,当然不使用垃圾收集......

任何人都能解释一下,为什么Cassandra可以比在C/C++代码上运行的普通SQL更快?

编辑:
对不起"为什么地球上的地狱"的一部分,但它对我来说真的没有任何意义.
我忽略了一个数据库,不像一般的花园变量用户程序,只需要启动一次,然后运行很长一段时间,也可能作为服务器上唯一的程序,这显然是一个重要的性能差异.

我更多地比较/引用了一个'不合适的'(温和地说)我在撰写本文时使用的Java税收计划(或者更愿意使用).

实际上,与将Java用于税务程序不同,使用Java编写专用服务器程序非常有意义.

c c++ java database-design cassandra

33
推荐指数
5
解决办法
2万
查看次数

标签 统计

c++ ×2

java ×2

c ×1

cassandra ×1

database-design ×1

performance ×1