LINUX.ORG.RU

Оптимизирующий компилятор для Python


0

0

Экспериментальный компилятор Shed Skin преобразует код на языке Python в код C++.

Компилятор использует неявную статическую типизацию, т.е. синтаксис языка не меняется, и явного объявления типов не требуется. При этом на программу накладывается ряд естественных ограничений, связанных с невозможностью отобразить ряд динамических свойств Python на С++.

По тестам скорость выполнения возрастает до 220 раз в сравнении с CPython, в среднем в 45 раз.

>>> Подробности

★★★

Проверено: Shaman007 ()

Ответ на: комментарий от anonymous

> для того чтобы их использовать и оптимизировать. и причем тут вопрос про прототипы?

при том, что это одно из распространённых применений питона; гугл выдаёт "about 1,410,000 for prototype python C++"

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

> поэтому возник вопрос, если скорость не важна, а важна независимость, с точки зрения человека, чем эта зависимость плоха?

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

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

Ну, во первых C++, а во вторых, чего докопались ко мне-то с тотальным или крупномасштабным переводом. Я совершенно ясно обозначил свою позицию, что это может быть полезно для *некоторых случаев* (а тесты у автора -- гольная математика), когда на питоне это написать проще, чем на плюсах, а работать будет быстрее после корректной трансляции на плюсы. Потом при какой кухне здесь вдруг всплыл Eiffel? Я где-то сказал, что быстрее С++ нет ЯП?

Lumi ★★★★★
()

Есть такая довольно известная ММОРПГ - EVE-Online. Уникальна тем, что на ОДНОМ сервере там 15к+ человек онлайна! Дык вот, если мне не изменяет память, там в клиентской части (и вроде в серверной тоже) юзается как раз таки питон.

ЗЫ. Это я насчет кошерных программ, у которых в поставке сразу питон идет :)

asciiz
()
Ответ на: комментарий от Linfan

>Питону почти близнец по идеологии Тикль. Только синкасис его не такой изящный как у Питона.

Угу, с точностью до наоборот... Или для вас (изящнее) == (больше на С++ похоже)? Тогда конечно!:)

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

> что это может быть полезно для *некоторых случаев*

Ну если только очень некоторых...

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

>имхо, ключевой момент здесь -- даже не скорость, а полная независимость полученного кода от питоновского рантайма.
>anonymous (*) (05.05.2006 14:10:25)

+ 100000000000000!

Ну прям моя любимая мозоль!
Бум шас его мучать, если заработает - пошлю донэйшен даже! Ибо релиф :)

anonymous
()
Ответ на: комментарий от KRoN73

> На чисто вычислительных задачах, ради которых, вроде бы, оптимизация и идёт, Jython - тормоз.

Может быть. Я использую нативный :-)

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

>После всего этого становится ясно, что для написания хоть сколько нибудь сложных программ на Python просто не выполнимая задача. Впрочем это было и так понятно. А программки а-ля "hello world" я и на C++ напишу.
>kda (*) (05.05.2006 14:25:38)

Да - щедра земля ...ая альтернативными пиплами :)
Посмотри на проекты типа Eric3 - хороший такой "hello world" ...

PS: Все равно не верится что кто то "не осилил" питон. Ну чего может быть проще?! Разве Logo ....

PPS: А обсуждаемая примочка - узко применимый, но все же полезный тул.

anonymous
()
Ответ на: комментарий от kda

>Прошу прощения, я не проверил данную фразу.
>Ее стоит читать так:
>"После всего этого становится ясно, что написание хоть сколько нибудь сложных программ на Python которые сможет преобразовать данный "оптимизирующий" компилятор - просто невыполнимая задача."
>kda (*) (05.05.2006 14:49:19)

Черт! Тогда прошу прощения за предидуший пост!

PS: Говорила мама - читай трэд до конца :(

anonymous
()

Даёшь портаж без питона!

anonymous
()

Вещь на мой взгляд бесполезная, потому как вместо хорошего кода на питоне получаем взамен корявый код на плюсах. Почему не писать на плюсах сразу, если задача для них? А если задача для питона, то 100% оно этой штукой не оттранслируется, ибо как козырь питона -- это динамичность.

На связке питон+с++ пишу уже более 4-х лет, но вот необходимости в такой байде ни разу не возникло. И на практических задачах всякие там Psyco дают прироста не более чем 1-1.5 процента. Потому как главное баланс правильный между питоном и плюсами(или без плюсов, кому как) :-)

И вообще каждой проблеме правильный инструмент нужен.. а то начинают расчеты на питоне писать, а потом удивляются: вот тормоз-то какой! Питон-то не для этого, побойтесь Гвидо!

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

+1 потому как устал обяъснять Lumi и упрямому анонимусу, а это и есть почти мой ответ, только они все равно не читатели

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

на вопрос причем тут прототипы человек отвечает мне про гугл. товарищ все таки у вас потеряна причинно-следственная связь. я спрашивал в контексте не того почему вам пришло в голову вопрос про прототипы а почему он пришелся вопросом на вопрос про негодность зависимости от рантайма питона.

>>дело не в том что "зависимость плоха",

раз уж вы озаботились ответом по теме. тоже озабочусь ответом на ваше замечание:

>>а в том что интересна прежде всего в данной разработке возможность получить чистый С++ код.

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

>>разработка экспериментальная, приложения возникнут со временем. прототипы -- первый пример какой пришёл на ум

опять же следите за причиной-унд-следствием, я про прототипы ничего отрицательного не отчечал. добавлю если вы и после этого не поймете: Питон хорош для прототипов! но прототипы НЕ ОБЯЗАТЕЛЬНО переводить полностью на Си, и даже более того ;)

anonymous
()
Ответ на: комментарий от Lumi

>>Ну, во первых C++,

да это как раз в десятых - вы же уже все отладили в Питоне какая разница на чем дальше это будет все равно просто скормите компилятору, а вот ЕСЛИ не скормите а будете отлаживать ТО смотрите выше

>>Я совершенно ясно обозначил свою позицию, что это может быть полезно для *некоторых случаев* (а тесты у автора -- гольная математика)

я только уточнил про узость этих некоторых случаев, которые лучше решать без таких посредников

>>когда на питоне это написать проще, чем на плюсах, а работать будет быстрее после корректной трансляции на плюсы.

не забывайте про отладку до релиза

>>Потом при какой кухне здесь вдруг всплыл Eiffel? Я где-то сказал, что быстрее С++ нет ЯП?

нет. просто если вы так хотите писать на Питоне, потому что просто, а компилировать на Си, потому что быстро, так я вам предлагаю выбрать середину пишите свои библиотеки (или даже полностью все) на Эйфеле и просто и статическая компиляция есть.

anonymous
()
Ответ на: комментарий от blaster999

>Хы! Скорость и жаба? Молодой человек, закусывать надо.

>С плюсами по скорости жабе тягаться бесполезно.

Голословное утверждение. Обоснуй.

ЗЫ. Кстати, тут на лоре проходила "пузомерка" что быстрее С или JAVA.
Задача была сформировать массив из 10^6 целых чисел, отсортировать их, и случайную выборку сделать. Так вот, на этой задаче JAVA скушала GCC с потрохами. Поройся. тут все есть.

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

не вижу ни одного шанса у java на этой задаче опередить с++(эт конечно смотря как писать..)

может померяемся еще раз.. что-то ни одно из утверждений что java/c# быстрее чем с++ пока не оправдалось, хотя некоторые коллеги утверждали что это именно так. Правда после небольшой оптимизации кода на с++ он становился быстрее.. по последним пузомеркам с# VS c++ че-то около полутора раз оказалось на похожей задаче.. тоже че-то там с массивами чиселов. (что в общем-то неплохо, стоит признать)

dimonb
()
Ответ на: комментарий от anonymous

> просто если вы так хотите писать на Питоне, потому что просто, а компилировать на Си, потому что быстро

Это не я хотел писать на питоне потому что это просто, а анонимус. Вы очень невнимательно читаете.

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