Python は C/C++ や Java などの他の言語ほど効率的ではないと言われています。また、ボトルネック部分を C で記述することも推奨されています。しかし、私はそのような問題に遭遇したことはありません。言語の効率ではなく、問題を解決する方法です。
誰かが実際の状況を説明できますか? いくつかの単純なコードは素晴らしいでしょう。
Python は C/C++ や Java などの他の言語ほど効率的ではないと言われています。また、ボトルネック部分を C で記述することも推奨されています。しかし、私はそのような問題に遭遇したことはありません。言語の効率ではなく、問題を解決する方法です。
誰かが実際の状況を説明できますか? いくつかの単純なコードは素晴らしいでしょう。
これに対する SO の回答は既にあります: Python は C++ よりも高速で軽量ですか? . これは、最初にここで引用したかった Computer Languages Benchmarks Gameを参照しています。
そのため、Python は (組み込みの C コードを使用していない場合) 深刻な計算を行う場合に非常に遅くなります。
C の方がはるかに高速であることがわかるように、挿入ソートを使用した実用的な比較。これらは 1 対 1 の試みであることに注意してください。現実の世界では、https://en.wikipedia.org/wiki/Timsortを使用する Python のソートを使用するだけで、はるかに効率的です。結果:
パイソン
real 0m0.034s
user 0m0.028s
sys 0m0.008s
ハ
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 の 2 番目
#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");
}
There isn't a specific set of circumstances in which C or C++ win. Pretty much any CPU-heavy code you write in C or C++ will run many times faster than the equivalent Python code.
If you haven't noticed, it's simply because, for the problems you've had to solve in Python, performance has never been an issue.