我目前正在决定建立一个科学计算产品的平台,并决定使用Core2 Quad CPU上的英特尔编译器的C#,Java或普通C.它主要是整数运算.
到目前为止,我的基准测试显示Java和C相互之间的差距很大,而.NET/C#的速度约为5% - 但是我的一些同事声称,如果给定足够的时间,那么具有正确优化的.NET将会击败这两者让JIT做它的工作.
我总是认为JIT会在应用程序启动后的几分钟内完成它的工作(在我的情况下可能只需几秒钟,因为它主要是紧环),所以我不确定是否相信它们
任何人都可以了解情况吗?.NET会打败Java吗?(或者我最好只是坚持使用C?).
代码是高度多线程的,数据集的大小是几TB.
在这种情况下,Haskell/Erlang等不是选项,因为有大量现有的遗留C代码将被移植到新系统,而将C移植到Java/C#比Haskell或Erlang简单得多.(当然,除非这些提供了显着的加速).
编辑:我们正在考虑转向C#或Java,因为理论上它们可能更快.我们可以减少每一个处理时间,每年为我们节省数万美元.在这一点上,我们只是试图评估C,Java或c#是否会更快.
知道为什么这段代码:
extern "C" __declspec(dllexport) void Transform(double x[], double y[], int iterations, bool forward)
{
long n, i, i1, j, k, i2, l, l1, l2;
double c1, c2, tx, ty, t1, t2, u1, u2, z;
/* Calculate the number of points */
n = (long)pow((double)2, (double)iterations);
/* Do the bit reversal */
i2 = n >> 1;
j = 0;
for (i = 0; i < n - 1; ++i)
{
if (i < j)
{
tx = x[i];
ty = …Run Code Online (Sandbox Code Playgroud)