c# - 语言表现

标签 c# c++ performance f#

<分区>

“C# 与 Java 性能”、“F# 与 C# 性能”、“C 与 C++”、“ native C++ 与 C#”等日常讨论总是很有趣。就像idiom.com/~zilla/Computer/javaCbenchmark.html , 或 mb manageability.org/blog/archive/20030520%23p_the_problem_with_cameron

一般来说,A语言的专家证明A语言比B语言快。

在大多数情况下,这个测试意味着 A 的 pro 确实知道如何在 B 中快速实现基准问题,或者 B 的实用程序没有完美优化。

什么是语言表现? 当我们谈论不同的技术时,情况很清楚。例如,我们可以计算出 Nvidia CUDA 何时比 CPU 计算更快,反之亦然。或者模拟计算机优于数字计算机。

当我们处理具有相同目的的语言时,一切都会变得更加困难。例如,我做了几年的 C# 程序员,几乎每天都在编写不安全的代码,并且我读过 Jeffrey Richter 关于低级内存管理的书。我可以在固定内存中实现一些数值算法,仔细验证算法的每一步。但是我没有深入的Java知识。我将肤浅地实现测试用例。我的基准测试将显示 C# 快很多倍。但这不是真正的基准。

最后,很难比较具有相同基础的不同语言。就像 F# 和 C#。 Just like this discussion

我发现的所有测试用例都表明测试的作者确实知道语言 A 而不知道语言 B。

所以。什么是更快的正确指标?

附言。我真的相信 C# 比 F# 快,因为我无法想象在 F# 中可以解决的任务,而我在 C# 中不能做得更好 (:

最佳答案

语言 A 的性能与语言 B 的性能几乎总是有缺陷的比较。实际比较的是程序 P 在语言 A 实现中的实现与程序 P 在语言 B 实现中的实现的性能。

换句话说,语言不能以性能为基准;程序可以,语言实现也​​可以。

这些比较假设程序 P 是用两种语言等效编写的,并且两种语言的实现是等效的。

相对于另一种语言,一种语言的不同实现可能具有更好或更差的性能。例如,Google 正在致力于优化 Python 以提高相对于主流解释器的性能,这与 Python 的 Iron Python、Jython、Stackless 和 PyPy 实现具有不同的性能特征。

编程的难易程度是一个非常主观的衡量标准,因为很难找到同样熟悉语言 A 和 B 的程序员,并且根据编写第一次编程。

各种客观指标都是可能的,例如代码行数;但这些通常存在缺陷,导致代码高尔夫。

关于c# - 语言表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636362/

相关文章:

c++ - 错误 C2259 :cannot instantiate abstract class

c++ - 每 2 秒捕获帧

performance - MongoDB动态排名

用于复杂查询的 MySQL last_query_cost

c# - 远程服务器返回错误 : (407) Proxy Authentication Required

c# - 遍历列表并动态创建摘要行

c++ - 如何在 Qt 中以编程方式将 QWidget 设置在窗口的中央?

javascript - 直接在 JS 中动态改变 transition 还是使用 css classes 对性能更好?

c# - Web.MVC 中的简单注入(inject)器,未发生注入(inject)

c# - 多个中间件(REST + SOAP)