LINUX.ORG.RU

[мой мозг!][глубокая рекурсия] PyPy


0

0

На опеннете появилась новость об очередном релизе (версия 1.2) интерпретатора Python'а, написанного на Python'е.

Главное улучшение новой версии - появление JIT-компилятора, позволяющего при выполнении некоторых операций обогнать по производительности реализацию Python на языке Си (CPython)

Кроме высокой скорости работы, PyPy потребляет, по сравнению с CPython, меньше памяти.

Я конечно понимаю многое, от полного отсутствия женщин в некоторых участках планеты до врождённой страсти к мазохизму в тяжёлых формах, но как этот ПайПай может обогнать реализацию Python, написанную на C, пусть даже всего на некоторых операциях? Разве сам PyPy выполняется не CPython'ом? Нет? Сам собой выполняется, что ли? Это же /0?

Вот какие-то такие мысли у меня возникли по поводу этой новости. Естественно, я сначала решил начать обсуждение, а потом погуглить матчасть.

> но как этот ПайПай может обогнать реализацию Python, написанную на C

Ты перепутал все. Скомпиллированный код pypy обгоняет скомпилированный код питона в С. А что код С настолько быстр что ничто не может его обогнать? Может.

mobile ()
Ответ на: комментарий от Ingwar

покусал слоупок?

нет, он раньше не обгонял сишную реализацию. Если б сейчас не обогнал - я бы снова на него внимания не обратил. Мало ли, кто как др***т.

name_no ★★ ()
Ответ на: комментарий от mobile

Вообщето яву ничего не может обогнать

А что код С настолько быстр что ничто не может его обогнать?

wfrr ★★☆ ()

> Разве сам PyPy выполняется не CPython'ом? Нет? Сам собой выполняется, что ли? Это же /0?

первый компилятор паскаля был написан на паскале. парадокс? :)

opensuse ()
Ответ на: комментарий от name_no

а чего бы ему не быть быстрее? RPython реализует статическую типизацию в отличие от

Ingwar ★★★★★ ()
Ответ на: комментарий от opensuse

первый компилятор паскаля был написан на паскале. парадокс? :)

не, то компилятор. хотя, да, парадокс. а чем его скомпилировали? это unrar.rar в полный рост?

name_no ★★ ()

> Кроме высокой скорости работы, PyPy потребляет, по сравнению с CPython, меньше памяти.

Опеннет такой опеннет... Где они усмотрели, что PyPy потребляет меньше памяти по сравнению с CPython? Говориться, что PyPy теперь потребляет меньше памяти, чем раньше, но: «It is still memory-hungry. There is no limit on the amount of RAM that the assembler can consume; it is thus possible (although unlikely) that the assembler ends up using unreasonable amounts of memory».

tailgunner ★★★★★ ()
Ответ на: комментарий от name_no

small c мог себя сам собрать, и имел 4 тысячи строк на с.
А первый раз можно написать и на ассемблере.

elipse ★★★ ()
Ответ на: комментарий от name_no

>а чем его скомпилировали?

его не скомпилировали, его вирт лично в оноффе набирал :)

Ingwar ★★★★★ ()
Ответ на: комментарий от elipse

А первый раз можно написать и на ассемблере.

и можно, и нужно, но тот, кому я отвечал, сказал, что _первый_ был написан на паскале. Одна из черепашек ...того?

name_no ★★ ()
Ответ на: комментарий от Ingwar

> а чего бы ему не быть быстрее? RPython реализует статическую типизацию в отличие от

...от Си? :) PyPy быстрее потому, что у него JIT внутри, а не от статической типизации RPython.

tailgunner ★★★★★ ()
Ответ на: комментарий от name_no

На первом шаге из языка L выделяется подмножество L0, которое не требует больших усилий для реализации, но является достаточно богатым для написания компилятора самого себя.

На втором шаге, используя какой-либо существующий для платформы M язык (например, C) программируется компилятор L0—С—M.

я считаю, что в это алгоритме написания компилятора Языка на Языке есть небольшой обман. Потому что первый компилятор пишется на втором шаге и на другом языке.

name_no ★★ ()
Ответ на: комментарий от tailgunner

нормальных тестов нет пока, а жабу и с# не дураки делали - и надарать
с им пока не светит.

elipse ★★★ ()
Ответ на: комментарий от tailgunner

>...от Си? :) PyPy быстрее потому, что у него JIT внутри, а не от статической типизации RPython.

а у нутре у него неонка.

быстрее чем что? RPython исполняется джитом, а СPython обходится без оного. кто будет быстрее?

СPython может в теории быть медленнее RPython, именно в силу статической типизации.

Ingwar ★★★★★ ()
Ответ на: комментарий от tailgunner

хотя фиг его знает, может я и не прав. спорить не буду.

Ingwar ★★★★★ ()
Ответ на: комментарий от Ingwar

> быстрее чем что?

Чем CPython.

RPython исполняется джитом

А CPython исполняется статически скомпилированным машинным кодом.

СPython может в теории быть медленнее RPython

Ты сравниваешь интерпретатор языка Python и подмножество языка Python, тебе это кажетсся нормальным?

tailgunner ★★★★★ ()
Ответ на: комментарий от Ingwar

> а у нутре у него неонка.
ковырнул сырцы PyPy
нет, там банальный динамический ассемблер i386 на пистоне ))

elipse ★★★ ()
Ответ на: комментарий от elipse

>small c мог себя сам собрать, и имел 4 тысячи строк на с.

И он был быстрее, чем он же, но реализованный на С, дооооо. Вы нв меня внимания не обращайте, у нас вчера была вторая часть восьмимартовского корпоратива.

abraziv_whiskey ★★★★★ ()
Ответ на: комментарий от name_no

Пишешь интерпретатор на другом языке, запускаешь на нём компилятор и компилируешь им самого себя.

Хотя питон-то интерпретатор, это же совсем другое...

Yareg ★★★ ()

PyPy сделан для того, чтобы можно было проще прототипировать основную реализацию Python - не более того.

Quasar ★★★★★ ()
Ответ на: комментарий от elipse

> ковырнул сырцы PyPy

нет, там банальный динамический ассемблер i386 на пистоне ))

АААА!!!!!!1111 Слушай, научи так понтоваться, а? %)

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Ха ха, а ты думал, что есть иные способы получить быстрый машинный код используя модные аббревиатуры и термины ? ))

elipse ★★★ ()
Ответ на: комментарий от elipse

> ты думал, что есть иные способы получить быстрый машинный код используя модные аббревиатуры и термины ? ))

Нет, я думал, что называть PyPy «банальным динамическим ассемблером для i386» может только человек, написавший небанальный динамический кроссплатформенный ассемблер :)

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

1. ну, PyPy - далеко не кроссплатформенно

2. А хотя да, были и такие грехи в молодости:
для набивки руки писания прог на с ,за месяц для Intel MCS-196 настрочил динамический эмулятор для этого проца + ассемблер и дизасcемблер с привязкой к именам, и пригодилось это по работе.
Контора нищая была, а фирмовый софт был дорогой и плохо крякнутый ))
а эти камушки от Интела (для своего времени) были весьма интересными и полезными.


elipse ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.