我有一个问题,我认为这可能是一个愚蠢的问题。因此,如果我们有一个算法,假设它是递归算法,但是我们用不同的编程语言实现它,那么实现之间的性能有何不同?例如,来自这些示例代码。
void printFunInCpp(int test)
{
if (test < 1)
return;
else
{
cout << test << " ";
printFun(test-1); // statement 2
cout << test << " ";
return;
}
}
static void printFunInJava(int test)
{
if (test < 1)
return;
else
{
System.out.printf("%d ",test);
printFun(test-1); // statement 2
System.out.printf("%d ",test);
return;
}
}
def printFunInPython(test):
if (test < 1):
return
else:
print( test,end = " ")
printFun(test-1) # statement 2
print( test,end = " ")
return
那么,从上面的示例来看,这三种编程语言之间的性能是否存在差异?如果存在性能差异,是否有任何技术可以知道?内存使用情况如何?
谢谢
答案 0 :(得分:3)
是的,存在性能差异,它取决于许多不同的因素。 C代码可能是最快的,因为它直接编译为计算机体系结构的机器代码,没有比这快的多。
Java代码将被编译成其自己的虚拟机的机器代码。尽管过去几年中它已经有了很大的改进,但是这肯定会比本机代码慢。在此示例中,真正拖累Java的是开销(启动JVM等,它可能需要大约35 MB的空间才能完成诸如“ Hello World!”之类的简单操作)。对于一个长时间运行的程序来说,这并不是一个大因素,但是对于一个短程序却会在几毫秒内终止的情况,它将是一个重要因素。
Python是一种解释语言。 Python程序必须随时随地变成机器指令。当然,这将影响其性能,以换取其他优势。
简而言之,不同的语言会使用权衡极大的不同概念。性能是可以权衡其他优势的事物之一。对于正确的工作,使用正确的工具很重要,对于某些工作,您将需要高性能,而对于其他工作,便捷,容错,兼容性或其他方面的工作可能是首选。答案 1 :(得分:1)
已经对此进行了讨论:
Performance differences between Python and C
仅介于C和Python之间。
一般来说,很难说。在python中,很多模块都是用C编写的,以提高执行性能。通过设计python的好处更多在于编写和读取代码的简便性,而不是执行时间。
希望这会有所帮助。