gpt4 book ai didi

c# - 什么更快——Java 或 C#(或好的旧 C)?

转载 作者:IT老高 更新时间:2023-10-28 21:16:24 25 4
gpt4 key购买 nike

我目前正在决定在一个平台上构建科学计算产品,并决定选择 C#、Java 或纯 C,在 Core2 Quad CPU 上使用英特尔编译器。它主要是整数算术。

到目前为止,我的基准测试显示 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# 是否会更快。

最佳答案

问题中的关键信息是:

Every percent we can shave off our processing time saves us tens of thousands of dollars per year

因此,您需要考虑将花费多少来削减每个百分比。如果这种优化工作每年花费数万美元,那么就不值得去做。解雇程序员可以节省更多。

有了正确的技能(如今这些技能越来越少,因此也越来越贵),您可以手工制作汇编程序以获得最快的代码。使用稍微不那么稀有(且昂贵)的技能,你几乎可以用一些看起来很丑陋的 C 代码来做同样的事情。等等。您从中挤出的性能越多,开发工作的成本就越高,而且付出的努力越多,返回就越少。如果从中获得的利润保持在“每年数万美元”,那么就会有一个不再值得努力的地步。事实上,我敢猜测你已经到了那个地步,因为“每年数万美元”在一份薪水的范围内,而且可能不足以购买手动优化复杂程序所需的技能。

我猜如果您已经用 C 编写了代码,那么将其全部重写为另一种语言的直接翻译将浪费 90% 的努力。它的执行速度很可能会变慢,因为您不会利用平台的功能,而是与它们对抗,例如尝试像使用 C 一样使用 Java。

在您现有的代码中,还有一些对运行时间有重要影响的部分(它们经常运行),而其他部分则完全不相关(它们很少运行)。因此,如果您对加快程序有一些想法,那么浪费时间将其应用于不影响运行时间的程序部分是没有经济意义的。

因此使用分析器来查找热点,并查看现有代码中哪些地方浪费了时间。

当我注意到对“多线程”代码的引用时更新

在这种情况下,如果您将精力集中在消除瓶颈上,以便您的程序可以在大量内核上很好地扩展,那么它每年都会自动变得更快,其速度将使您可以进行的任何其他优化相形见绌。明年这个时候,四核将成为台式机的标准配置。在那之后的一年,8核会越来越便宜(我一年多前花了几千美元买了一个),我预测到那个时候一台32核的机器会比开发者的成本更低。

关于c# - 什么更快——Java 或 C#(或好的旧 C)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com