powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) Как ускорить
5 сообщений из 5, страница 1 из 1
(Python) Как ускорить
    #38807714
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть такая программка, которая вычисляет простые числа
Питон
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
import datetime
import math

dt=datetime.datetime.now()

def GeneratePrimes (Limit):
    candidates = []
    primes = [2,3]
    i = 1

    while  6*i+1 < Limit:
        candidates.append( 6*i-1)
        candidates.append( 6*i+1)
        i += 1

    for i in range(0,len(candidates)):
        is_prime = True
        current_max = math.floor(math.sqrt(candidates[i])+1)

        j = 0
        while  candidates[j]< current_max:
            if candidates[i]%candidates[j] == 0:
                is_prime = False
                break
            j += 1

        if(is_prime):
            primes.append(candidates[i])

    return primes

primes = GeneratePrimes(1000000)

dt1 = datetime.datetime.now()

print len(primes)
print dt1 - dt




результат такой
Код: plaintext
1.
2.
78498
0:00:04.255145

она же но в исполнении node.js
JavaScript
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
dt = new Date();

function GeneratePrimes(Limit)
{
    var candidates = [];
    var primes = [2,3];
    var i = 1;

    while(6*i+1 < Limit)
    {
        candidates.push( 6*i-1);
        candidates.push( 6*i+1);
        i += 1;
    }

    for( i=0; i<candidates.length; i++)
    {
        var is_prime = true;
        var current_max = Math.floor(Math.sqrt(candidates[i])+1);

        var j = 0;
        while( candidates[j] < current_max)
	{
            if( candidates[i]%candidates[j] == 0 )
	    {
                is_prime = false;
                break;
	    }

            j += 1;
	}

        if(is_prime)
	{
            primes.push(candidates[i]);
	}
    }

    return primes;
}

primes = GeneratePrimes(1000000);

var dt1 = new Date();

console.log(primes.length);
console.log( dt1.getTime() - dt.getTime());




дает такой результат
Код: plaintext
1.
2.
78498
181

Вопрос: почему питон настолько медленнее и можно ли его ускорить?
...
Рейтинг: 0 / 0
(Python) Как ускорить
    #38808170
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так мы узнаём про JIT
...
Рейтинг: 0 / 0
(Python) Как ускорить
    #38808258
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowтак мы узнаём про JIT
как им можно воспользоваться?
все что у меня есть Python 2.7.5 поставленный из repo
...
Рейтинг: 0 / 0
(Python) Как ускорить
    #38808304
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
(Python) Как ускорить
    #38808315
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekZlocked,

https://pypi.python.org/pypi/hope/0.3.0

спасибо. поставил PyPy 2.2.1 with GCC 4.8.2 из repo

дает приемлемый результат

Код: plaintext
1.
2.
78498
0:00:00.350500

вопрос снят
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) Как ускорить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]