занимает на одной и той же машине на Пайтоне в 35 больше времени, чем на js в Хроме
адский треш!


Вы можете кликнуть на слово "правка" и сами исправить название.orleanz писал(а):модераторы, поправьте название топика - Пайтон МЕДЛЕННЕЕ в 35 раз чем js
dude i don't give a fuckГость писал(а):Птицын, ты здесь зря нарисовался.
Ведь здесь в каждом топике разрешены анонимы.
Держись, сейчас тебе напихают полную тачку уев!!![]()
![]()
Припомнят все 10 лет старого форума!
я так понимаю это у них такой общий подход в питоне, как только появляется что нибудь вычислительно-емкое, то что в интерпретаторе тормозит - подключают C библиотеку которая это считает. благо интерфейс к С нормальный а не такое как в яве например.orleanz писал(а):по существу - уже разобрался, что в Пайтоне JIT компайлер не содержится принципиально, но для желающих он есть в системах типа PyPy где скорость выполнения сравнимая с нативным кодом
так что вопроса собственно больше нет
можете удалять топег
Правильное название топика было бы, "Орлеанс написал тормозной код на javascript и python"orleanz писал(а):модераторы, поправьте название топика - Пайтон МЕДЛЕННЕЕ в 35 раз чем js
Код: Выделить всё
import time
def smallPrimes(n):
"""Given an integer n, compute a list of the primes < n"""
if n <= 2:
return []
sieve = range(3, n, 2)
top = len(sieve)
for si in sieve:
if si:
bottom = (si*si - 3)//2
if bottom >= top:
break
sieve[bottom::si] = [0] * -((bottom-top)//si)
return [2]+filter(None, sieve)
start = time.time()
primes = smallPrimes(2750160)
print("Primes found : " + str(len(primes)))
print("Time (s) : " + str(time.time()-start))
Код: Выделить всё
import time
def rwh_primes2(n):
# http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188
""" Input n>=6, Returns a list of primes, 2 <= p < n """
correction = (n%6>1)
n = {0:n,1:n-1,2:n+4,3:n+3,4:n+2,5:n+1}[n%6]
sieve = [True] * (n/3)
sieve[0] = False
for i in xrange(int(n**0.5)/3+1):
if sieve[i]:
k=3*i+1|1
sieve[ ((k*k)/3) ::2*k]=[False]*((n/6-(k*k)/6-1)/k+1)
sieve[(k*k+4*k-2*k*(i&1))/3::2*k]=[False]*((n/6-(k*k+4*k-2*k*(i&1))/6-1)/k+1)
return [2,3] + [3*i+1|1 for i in xrange(1,n/3-correction) if sieve[i]]
start = time.time()
primes = rwh_primes2(2750160)
print("Primes found : " + str(len(primes)))
print("Time (s) : " + str(time.time()-start))
Гея Орлеанса жостко отымели в извращённой форме.solo писал(а):Правильное название топика было бы, "Орлеанс написал тормозной код на javascript и python"orleanz писал(а):модераторы, поправьте название топика - Пайтон МЕДЛЕННЕЕ в 35 раз чем js
Вот код на pyhton, который генерирует 200 тыс простых чисел за 0.2 секунды.
и еще один за 0.125 secКод: Выделить всё
import time def smallPrimes(n): """Given an integer n, compute a list of the primes < n""" if n <= 2: return [] sieve = range(3, n, 2) top = len(sieve) for si in sieve: if si: bottom = (si*si - 3)//2 if bottom >= top: break sieve[bottom::si] = [0] * -((bottom-top)//si) return [2]+filter(None, sieve) start = time.time() primes = smallPrimes(2750160) print("Primes found : " + str(len(primes))) print("Time (s) : " + str(time.time()-start))
Код: Выделить всё
import time def rwh_primes2(n): # http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188 """ Input n>=6, Returns a list of primes, 2 <= p < n """ correction = (n%6>1) n = {0:n,1:n-1,2:n+4,3:n+3,4:n+2,5:n+1}[n%6] sieve = [True] * (n/3) sieve[0] = False for i in xrange(int(n**0.5)/3+1): if sieve[i]: k=3*i+1|1 sieve[ ((k*k)/3) ::2*k]=[False]*((n/6-(k*k)/6-1)/k+1) sieve[(k*k+4*k-2*k*(i&1))/3::2*k]=[False]*((n/6-(k*k+4*k-2*k*(i&1))/6-1)/k+1) return [2,3] + [3*i+1|1 for i in xrange(1,n/3-correction) if sieve[i]] start = time.time() primes = rwh_primes2(2750160) print("Primes found : " + str(len(primes))) print("Time (s) : " + str(time.time()-start))