友善提问:高性能场景下 Java 和 cpp 哪个更优秀

2024-08-26 18:29:07 +08:00
 GuardX

友善讨论下,目前 jdk-graalvm 和 cpp 有可比性吗 小白提问,大佬轻喷

3280 次点击
所在节点    程序员
16 条回复
proxytoworld
2024-08-26 18:33:39 +08:00
看你定义的是那种高性能了,以游戏服务端来举例,基本上都是 cpp ,电商的那种又是 java 多
XiLingHost
2024-08-26 18:36:00 +08:00
具体是啥高性能啊,低延迟还是高吞吐量,场景是计算密集型还是 io 密集型还是啥?
paopjian
2024-08-26 18:39:08 +08:00
高性能也要和开发效率妥协,你可以搜搜看一个 The One Billion Row Challenge,超级优化 java 速度也不慢了
zhuangzhuang1988
2024-08-26 19:33:25 +08:00
看写代码的人。
Jinnrry
2024-08-26 19:55:55 +08:00
这两个都支持高性能,具体最终程序能不能高性能得看写程序的人
Mithril
2024-08-26 19:57:10 +08:00
主要还是看人。

你有足够的基础知识,不管 Java 还是 C++都可以最大化利用其特性,那其实区别并不大。C++你可以很方便的手写各种优化代码,从 SIMD Intrinsics 到驱动甚至网络栈都可以改。
Java 虽然 17 也引入了 Vector ,不过你要是有能力做各种底层优化的话,还是 C++顺手写。

但绝大部分人其实都用不到这些东西。你也没那么多必要去压榨硬件性能。毕竟硬件比你人工便宜得多。
而且单纯计算的话,如果纯靠编译器优化,这俩也不会相差很多的。

总之,一个可以用 C++写出满足高性能计算要求代码的人,用 Java 除非受到 API 或者 JVM 限制,不然性能也不会有太大差别。
而且,JNI 算 Java 吗。。。
xiaochun41
2024-08-26 22:20:35 +08:00
笼统回答的话就是 C++
rabbbit
2024-08-26 22:38:21 +08:00
搭车问个问题,c++有什么轻量级的线程池或多线程优化资料吗?
一个任务需要调用某个函数执行 4 次耗时 5ms~6ms ,上了 pthread 线程池反而速度慢了需要耗时 8~10ms ,是因为线程本身有开销吗?
rabbbit
2024-08-26 22:40:37 +08:00
补充一下运行环境,是 Emscripten 跑在浏览器里的
yolee599
2024-08-27 08:58:46 +08:00
楼上都在说看写代码的人,那么我假设两个写 java 和写 C++ 的人技术都是顶级的,那肯定是 C++ 性能好
xuanbg
2024-08-27 09:08:00 +08:00
同样算法的计算 pi 的代码,实测 C 艹和 Java 几乎没有区别。所以,程序的性能区别只在人。
me1onsoda
2024-08-27 09:40:58 +08:00
难道不是看生态吗? Java 有可以调用显卡计算的库吗
iPisces77
2024-08-27 11:04:16 +08:00
graalvm 这个没有 jit 性能不如 jvm 的
xgdgsc
2024-08-27 11:37:50 +08:00
Julia 更优秀
dododada
2024-08-27 13:15:08 +08:00
以前高性能计算都是 C++,小型机时代跑一天任务不少钱呢。
现在计算有显卡好很多了,有的任务也上超算的,程序优化不好就浪费钱
ENNRIaaa
2024-08-27 14:51:22 +08:00
感觉还是看对内存是否敏感吧,其他差异应该不大。最好是具体说一下场景,在哪方面的高性能要求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1067927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX