Sky*_*ion 2 java recursion performance loops
我很好奇哪个迭代效率更高.我正在使用一个解析一个字符串解析为List.递归更有效率CPU还是循环?要么更高效的内存?通过循环,我指的是,为每个,做,while,和任何其他类型.这些循环中哪些更有效?或者他们都是平等的?只是好奇.
你不能就此作出一般性陈述.这取决于循环的作用,编码方式以及JIT编译器如何优化它.它也可以改变循环迭代的列表类型.递归也是如此.
要获得可靠的答案,您需要根据具体情况检查各种备选方案,并(仔细!)对Java平台上的特定示例进行基准测试.
Java中的递归存在每个递归级别都需要堆栈帧的问题,并且Java堆栈具有有限的大小.如果你必须过于递归,你的算法会崩溃StackOverflowError.(当前一代Java平台不实现尾调用优化.)
您还希望避免在a上执行基于索引的迭代(例如for i = 0 to size - 1)LinkedList,因为这将为您提供O(N^2)行为.
幸运的是,不同类型的Java循环的性能差异通常不会产生足够的差异.因此(以堆积深度问题为模,以及选择正确的List类的问题),您可以安全地将性能保留为"以后"...... 如果有必要进行性能优化,则只处理它.