Algorithm 如何比较不同语言之间的性能?

Algorithm 如何比较不同语言之间的性能?,algorithm,testing,Algorithm,Testing,假设我用两种不同的语言编写了一个程序,我需要比较性能, 除了比较它们的运行时间之外,我应该关注哪些方面?您关注的是错误的事情。真正的问题是你想使用低级语言(更快)还是高级语言(更慢)。一门高级语言将为你做很多事情,它也会做出某些假设,这将使它变得更慢。使用高级语言时,您将经历多个抽象层,因此它自然会变慢。如果你想要最高性能,使用C++。如果您想要更快的东西,请使用汇编语言。像c#或java这样的高级语言会更方便,因为很多底层管道都是为您处理的,但随之而来的是性能下降。这同样伴随着某些假设和执行的

假设我用两种不同的语言编写了一个程序,我需要比较性能,
除了比较它们的运行时间之外,我应该关注哪些方面?

您关注的是错误的事情。真正的问题是你想使用低级语言(更快)还是高级语言(更慢)。一门高级语言将为你做很多事情,它也会做出某些假设,这将使它变得更慢。使用高级语言时,您将经历多个抽象层,因此它自然会变慢。如果你想要最高性能,使用C++。如果您想要更快的东西,请使用汇编语言。像c#或java这样的高级语言会更方便,因为很多底层管道都是为您处理的,但随之而来的是性能下降。这同样伴随着某些假设和执行的额外代码,这些代码可能与您试图实现的目标无关


如果要测试不同语言函数的性能,请选择可能需要该语言或平台为您处理许多下划线函数的函数。此外,较低级别的语言倾向于让您直接访问硬件,允许您调整与硬件的交互方式。游戏引擎和需要顶级性能的其他项目通常是用C++编写的,与VisualBasic语言一样,因为控件的数量和使用非托管代码的性能提高。我将首先关注需要提高性能的类别,如(图形等),然后从中选择一些测试。我也相信,你可以在互联网上找到已经发布的比较语言表现的现有测试。

你把重点放在了错误的事情上。真正的问题是你想使用低级语言(更快)还是高级语言(更慢)。一门高级语言将为你做很多事情,它也会做出某些假设,这将使它变得更慢。使用高级语言时,您将经历多个抽象层,因此它自然会变慢。如果你想要最高性能,使用C++。如果您想要更快的东西,请使用汇编语言。像c#或java这样的高级语言会更方便,因为很多底层管道都是为您处理的,但随之而来的是性能下降。这同样伴随着某些假设和执行的额外代码,这些代码可能与您试图实现的目标无关


如果要测试不同语言函数的性能,请选择可能需要该语言或平台为您处理许多下划线函数的函数。此外,较低级别的语言倾向于让您直接访问硬件,允许您调整与硬件的交互方式。游戏引擎和需要顶级性能的其他项目通常是用C++编写的,与VisualBasic语言一样,因为控件的数量和使用非托管代码的性能提高。我将首先关注需要提高性能的类别,如(图形等),然后从中选择一些测试。我还确信,您可以在互联网上找到已经发布的比较语言性能的现有测试。

功耗?内存占用?磁盘I/O?网络I/O?我不确定我在这个问题上是正确的,但是我认为这个问题会更好。尽管你可能想考虑使用的其他资源(特别是内存),但不要认为这是一个明确的答案。取决于性能的哪些方面对您很重要。是时候用这些语言编写代码了?:)(假设您对这些语言同样熟悉)制造商是否支持这些语言?您不想使用几年后可能不再受支持的语言?功耗?内存占用?磁盘I/O?网络I/O?我不确定我在这个问题上是正确的,但是我认为这个问题会更好。尽管你可能想考虑使用的其他资源(特别是内存),但不要认为这是一个明确的答案。取决于性能的哪些方面对您很重要。是时候用这些语言编写代码了?:)(假设您对这些语言同样熟悉)制造商是否支持这些语言?你不想使用一种在几年后可能不再受支持的语言?@aioobe:说真的,你在听取一些从未听说过
restrict
的人关于如何优化C代码的建议?我的意思是,关于C的性能有很多谬论,别名是C优化中的一个严重问题,但那篇文章似乎通过夸大这个问题而创造了全新的谬论。呵呵。。你显然比我更了解C和优化C代码。我刚刚发布了这个链接,作为他对一种特定语言的赞扬的平衡……我想重要的一点是:这是一个很容易被夸大的主题;-)@aioobe:说真的,你是从一个从未听说过
restrict
的人那里得到了关于如何优化C代码的建议?我的意思是,关于C的性能有很多谬论,别名是C优化中的一个严重问题,但那篇文章似乎通过夸大这个问题而创造了全新的谬论。呵呵。。你显然比我更了解C和优化C代码。我刚刚发布了这个链接,作为他对一种特定语言赞扬的制衡……我想重要的一点是:这是一个很容易浮夸的主题;-)