ベンチマーク例def prime(n):p =[True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return in以下の最大の素数を返す関数(エラトステネスのふるい)通常のPython版:4.75秒 Cython化版:3.04秒prime(10000000)を計算(コードには手を入れず)
22.
def prime(int n):cdefint i, mp = [True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return idef prime(n):p = [True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return i型宣言をいれる3.04秒 0.41秒
23.
def prime(int n):cdefint m, icdef int * p = <int * >malloc((n + 1) * sizeof(int))for i in range(n + 1):p[i] = 1m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = 0i += mm += 1i = nwhile not p[i]:i -= 1free(p)return i0.41秒 0.17秒リスト(配列)についてもC言語風の型宣言と動的割当て