The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск PyPy 5.0, реализации Python, написанной на языке Python "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск PyPy 5.0, реализации Python, написанной на языке Pyth..." +/
Сообщение от Аноним (-), 11-Мрт-16, 18:02 
С PyPy действительно на одном уровне с C:
time pypy ./test.py
0.782010319461

real    0m3.475s
user    0m3.464s
sys    0m0.011s

но вот только объяснение этому такое:
https://ru.wikipedia.org/wiki/PyPy
>PyPy состоит из стандартного интерпретатора и транслятора. Интерпретатор полностью реализует язык Python. Сам интерпретатор написан на ограниченном подмножестве этого же языка, называемом RPython (Restricted Python). В отличие от стандартного Python, RPython является статически типизированным для более эффективной компиляции
>C — трансляция кода RPython в C и запуск как родной программы; это стандартный режим работы;

Кроме того если в приведённый выше код на C добавить одну строку из openmp:


#include <stdio.h>
#include <math.h>

void main()
{
    int i;
    double sum = 0.0;
    #pragma omp parallel for reduction(+:sum)
    for( i = 0; i < 100000000; ++i )
        sum += sin(i);
    printf("%.12f\n", sum);
}


То результаты C кардинально меняются:
gcc test.c -fopenmp -lm
time ./a.out
0.782010319461

real    0m0.545s
user    0m4.207s
sys    0m0.000s


Добавим нолик к диапазону:
Python2: отказывается исполнять такой код
time python test.py
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    print(test())
  File "test.py", line 5, in test
    for i in range(1000000000):
MemoryError


Python3:
$ time python3 test.py
-0.12454896270324128

real    2m37.319s
user    2m37.137s
sys    0m0.015s


PyPy:
time pypy test.py
-0.124548962703

real    0m40.081s
user    0m40.035s
sys    0m0.008s


код на C без openmp:
time ./a.out
-0.124548962703

real    0m38.697s
user    0m38.659s
sys    0m0.000s


код на C c openmp:
gcc test.c -fopenmp -lm
time ./a.out
-0.124548962703

real    0m6.378s
user    0m48.648s
sys    0m0.000s

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск PyPy 5.0, реализации Python, написанной на языке Python , opennews, 11-Мрт-16, 09:28  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру