Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyPy上的Sympy-有时快6倍,有时慢4倍_Python_Performance_Sympy_Pypy - Fatal编程技术网

Python PyPy上的Sympy-有时快6倍,有时慢4倍

Python PyPy上的Sympy-有时快6倍,有时慢4倍,python,performance,sympy,pypy,Python,Performance,Sympy,Pypy,在这里,pypy的计算速度较慢,无论给定的数字是素数: C:\Users\User>python -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1)" 10 loops, best of 3: 25.9 msec per loop C:\Users\User>pypy -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1)" 10 lo

在这里,pypy的计算速度较慢,无论给定的数字是素数:

C:\Users\User>python -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1)"
10 loops, best of 3: 25.9 msec per loop

C:\Users\User>pypy -m timeit -n10 -s"from sympy import isprime" "isprime(2**521-1)"
10 loops, best of 3: 97.9 msec per loop
在这里,pypy创建素数列表的速度更快(从1到1000000):

很奇怪,很难理解

“如果你想让你的代码运行得更快,你应该使用PyPy。”-Guido van Rossum(Python的创建者)


我遗漏了什么吗?

isprime
在安装
gmpy
时有一个快速路径
gmpy
绑定到高度优化的C库,并且可能只安装在CPython上。

iPrime
具有安装
gmpy
的快速路径
gmpy
绑定到一个高度优化的C库,并且可能只安装在CPython上。

PyPy的优势对于只进行一次计算的非常简短的示例来说并不明显。查看的底部。您是否尝试过多次初始计算?我试了好几次,我总是(稍微)用
pypy
玩得更好!(如果有必要的话,试过LinuxMint)我试了好几次,结果总是一样的。这里还有一个:
C:\Users\User>python-m timeit-n10-s“来自Symphy import-isprime”“isprime(2**521-1);isprime(2**1279-1)”10个循环,每个循环最好3:287毫秒
C:\Users\User>pypy-m timeit-n10-s“来自Symphy import-isprime”“isprime(2**521-1);isprime(2**1279-1)”10个循环,最佳3:1.3秒/循环@BrenBarn:这并不能解释为什么pypy在一种情况下要快得多,在另一种情况下要慢得多。pypy的优势对于只进行一次计算的非常简短的示例来说并不明显。查看的底部。您是否尝试过多次初始计算?我试了好几次,我总是(稍微)用
pypy
玩得更好!(如果有必要的话,试过LinuxMint)我试了好几次,结果总是一样的。这里还有一个:
C:\Users\User>python-m timeit-n10-s“来自Symphy import-isprime”“isprime(2**521-1);isprime(2**1279-1)”10个循环,每个循环最好3:287毫秒
C:\Users\User>pypy-m timeit-n10-s“来自Symphy import-isprime”“isprime(2**521-1);isprime(2**1279-1)”10个循环,最佳3:1.3秒/循环@BrenBarn:这并不能解释为什么pypy在一种情况下要快得多,而在另一种情况下要慢得多。“gmpy和gmpy2依赖太多的CPython内部细节来移植到pypy。”这是gmpy维护者在Stackoverflow上的一条声明。你是对的:
C:\Windows\system32>python-m timeit-n10-s“from gmpy2 import is_prime”“is_prime”(2**521-1);is_prime(2**1279-1)“10个循环,每个循环最好3:29.8毫秒”
“gmpy和gmpy2依赖太多的CPython内部细节,无法移植到PYY。”这是gmpy维护程序在Stackoverflow上的一条声明。你是对的:
C:\Windows\system32>python-m timeit-n10-s“从gmpy2导入is_prime”is_prime“is_prime(2**521-1);is_prime(2**1279-1)”10个循环,每个循环最好3:29.8毫秒
C:\Users\User>pypy -m timeit -n10 -s"from sympy import sieve" "primes = list(sieve.primerange(1, 10**6))"
10 loops, best of 3: 2.12 msec per loop

C:\Users\User>python -m timeit -n10 -s"from sympy import sieve" "primes = list(sieve.primerange(1, 10**6))"
10 loops, best of 3: 11.9 msec per loop