【发布时间】:2011-08-04 12:13:43
【问题描述】:
理论上说,您只需在 [受硬件约束] 的尽可能多的线程中 [使用标准库] 生成随机数。 C++ 在 Java 上的速度有多快?
没有磁盘 i/o、内存或 gc。只是纯 Math.random() 跨线程调用。
【问题讨论】:
-
这一般是无法回答的。使用什么硬件平台、编译器、JVM 版本、编译和运行时参数……?如果你已经定义了所有这些,恕我直言,最好还是自己衡量一下......
-
一个非常普遍的速度比较是 C++ 比 Java 快 10 倍,但差异很大。
-
@Cray,这在(遥远的)过去的某个时候是正确的,但 AFAIK 不再是(多年以来)。关于纯数学功能,据说 C++ 仍然明显更快,但远未达到 10 倍。而在其他一些领域和场景中,Java 甚至可以超越 C++。另见stackoverflow.com/questions/2163411/…。
-
根据我的经验:C++ 快 2-3 倍。如果您能够使用 SSE/AVX 或其他特定于硬件的专业,则可能会更多。
-
没有理论上的答案——只有通过测量确定的答案。我倾向于相信以下内容:shootout.alioth.debian.org/u32/…
标签: java c++ performance math prng