这是一个性能难题:我在一个Intel Celeron 1.8GHz, 3GB RAM, Ubuntu 12.04 32-bit
盒子上跑步。我在, &中编写了Towers of Henoi
递归解决方案。我跑了同样的路,震惊地看到以下时间:C
Python
Java
n = 25
我认为它的Java
性能会比这个盒子好,Python
但看起来Java
比这个盒子慢几个数量级。为了中和任何代码级别的性能影响,我将代码保留为最基本的形式。以下是3个解决方案:C
Python
henoi.c
#include <stdio.h>
void move(int n, char src, char intr, char dest) {
if (n > 0) {
move(n-1, src, dest, intr);
printf("%c -> %c\n", src, dest);
move(n-1, intr, src, dest);
}
}
int main() {
move(25, 'A', 'B', 'C');
return 0;
}
henoi.py
def move(n, src, intr, dest):
if n > 0:
move(n-1, src, dest, intr)
print '%s -> %s' % (src, dest)
move(n-1, intr, src, dest)
move(n=25, src='A', intr='B', dest='C')
Henoi.java
public class Henoi {
static void move(int n, char src, char intr, char dest) {
if (n > 0) {
move(n-1, src, dest, intr);
System.out.println(src + " -> " + dest);
move(n-1, intr, src, dest);
}
}
public static void main(String[] args) {
move(25, 'A', 'B', 'C');
}
}
我正在使用gcc version 4.6.3
,Python 2.7.3
和Sun Java 1.6.0_24
.
有人可以帮我理解上面的数字吗???
勘误: 很久以后我才注意到我到处都将“Hanoi”拼写为“Henoi”。对不起 !