知道算法的性能差异(如果以不同的编程语言实现)

时间:2018-10-18 06:51:21

标签: java python c++ algorithm

我有一个问题,我认为这可能是一个愚蠢的问题。因此,如果我们有一个算法,假设它是递归算法,但是我们用不同的编程语言实现它,那么实现之间的性能有何不同?例如,来自这些示例代码。

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

那么,从上面的示例来看,这三种编程语言之间的性能是否存在差异?如果存在性能差异,是否有任何技术可以知道?内存使用情况如何?

谢谢

2 个答案:

答案 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的好处更多在于编写和读取代码的简便性,而不是执行时间。

希望这会有所帮助。