总是说Python不像C / C ++,Java等其他语言那么高效。并且还建议用C编写瓶颈部分。但是我从来没有遇到过这样的问题,也许它是因为大部分时间都是你解决问题的方式,而不是语言的效率。
任何人都可以说明任何真实情况吗?一些简单的代码会很棒。
答案 0 :(得分:5)
SO上已有答案:Is Python faster and lighter than C++?。它引用了the Computer Languages Benchmarks Game,我想在这里首先引用它。
因此,当进行严格的计算时,Python(当不使用内置的C代码时)要慢得多。
答案 1 :(得分:1)
使用插入排序的实际比较,如您所见,C更快。请注意,这些是1对1的尝试,在现实世界中,您将使用使用https://en.wikipedia.org/wiki/Timsort的Python排序并且效率更高。结果:
<强>的Python 强>
real 0m0.034s
user 0m0.028s
sys 0m0.008s
<强> C 强>
real 0m0.003s
user 0m0.000s
sys 0m0.000s
首先是Python
#!/usr/bin/python
a = [16, 7, 4, 10, 18, 15, 6, 12, 13, 5, 11, 14, 17, 8, 2, 9, 19, 3, 1]
print 'Unsorted: %s' % a
def insertion_sort(a):
for j in range(1, len(a)):
key = a[j]
i = j - 1
while i >= 0 and a[i] > key:
a[i+1] = a[i]
i = i - 1
a[i+1] = key
return a
# execute the sort
print 'Sorted: %s' % insertion_sort(a)
在C
中排名第二#include <stdio.h>
#include <stdlib.h>
/*
Compile with:
cc insertion-sort.c -o insertion-sort
*/
int main(int argc, char **argv)
{
int a[20] = {16, 7, 4, 10, 18, 15, 6, 12, 13, 5, 11, 14, 17, 8, 2, 9, 20, 19, 3, 1};
int i, j, key;
int len = 20;
printf("Unsorted: [");
for ( i = 0; i < len; i++ ) {
printf(" %d ", a[i]);
}
printf("]\n");
for ( j = 0 ; j < len ; j++ )
{
key = a[j];
i = j - 1;
while ( i >= 0 && a[i] > key ) {
a[i + 1] = a[i];
i = i - 1;
}
a[i + 1] = key;
}
printf("Sorted: [");
for ( i = 0; i < len; i++ ) {
printf(" %d ", a[i]);
}
printf("]\n");
}
答案 2 :(得分:0)
没有特定的环境可以让C或C ++获胜。几乎所有用C或C ++编写的CPU代码都会比同等的Python代码运行快许多倍。
如果您没有注意到,那只是因为,对于您必须在Python中解决的问题,性能从来就不是问题。