Возможна ли конвертация php скрипта - программы в програму на языке с или с++ ?

Demiurg

Guest
>уровень большинства заявлений в них, ужасающие ламерский
а можно имена ? а то тут столько людей отметилось, не знаю даже кого ламером считать...
 

Demiurg

Guest
иначе каждый воспримет это на свой счет ...

/me записал "такого то числа неко назвал меня ламером ... надо на ком-то отыграться"
 

ONK

Пассивист PHPСluba
fisher, разница очень сильно зависит от преобразуемого кода (количества использованных в нём откомпилированных процедур из других модулей) и реально может находиться в пределах от 2-х до 20 - 30 раз. Хотя не трудно привести пример кода работающий с элементарными типами данных, который можно ускорить и более чем в 100 раз, особенно если не пользоваться для создания локальных переменных процедуры zval контейнером (использовать его только для возврата значения).

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

texrdcom

Новичок
О ребята моее мнене такое любой код на /с/ даже плохо продуманный будет быстрей работать чем php
Для эксперемента предлагаю попробовать цикл for в 1000000
на с и на php и посмотреть время php 1m с 0.001с.
Я понмаю что наверное нет программ универсальных но если что то где то было дайте ссылку.
Зачем это нужно ?
Для того чтобы не изучать с или с++ а писать программы на php
и когда надо просто откопилить прогу в exe файл или в cgi.
Иногда ой как надо!.
Если кто против про быстроту привидите пример кода каторый в php будет работать быстрея чем на с и на с++
Хоть раз в жизни хочу увидеть такое дело!

-~{}~ 09.06.05 12:00:

Crazy
- скажи в каком направлений копать понятно есть исходники php
где на c описанны его функции ты имееш виду сканирования и поиск нужных функции и вынос их в отдельный файл для компиляции на с или как ?.
 

neko

tеam neko
вы определитесь для начала с целью для трансляции
а то я вижу тут половина не понимает разницы между c и c++
 

fisher

накатила суть
>>особенно если не пользоваться для создания локальных
>>переменных процедуры zval контейнером

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

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

теперь почему 3 - это, конечно, алхимия, но вчера ночью как-то не с руки было разжевывать. я лишь хотел сказать, что смысл безусловно есть и даже в самом хреновом случае можно ожидать прирост в несколько раз. по разным тестам, которые я проводил сам, и делали многие - акселератор ускоряет значительный кусок кода (при отсутствии каких-то не относящихся к делу боттлнеков) примерно в 3 раза "в среднем", ну т.е. это не какой-то там искуственно придуманный поиск, а какой-то код на десятки кило как минимум. но никак не на порядок, а заявленные zend'ои верхние границы из маркетинговых документов - разуммется это просто кэш результирующего html. далее, есть эпмирические данные, что готовый модуль даже в худшем случае ускоряет пхп-код "примерно" на порядок. т.е. нижняя граница: 10/3 = 3. ясно что оценка почти с потолка, но по крайней мере не 42. то, что для специфических случаев это мб и два порядка я не спорю.
 

neko

tеam neko
> Ну так кроме слов умние не умник что сказать можете

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

поэтому надо решить чо вы хотите
если вы хотите скорости, то помоему это не лучший вариант.
делать из программы, программу, это что-то из серии либо научных изысканий либо очень старых методик.
я бы скороее озаботился переносом байткода под более эффективную vm
например kaffe/jvm/mono
во-первых это намного проще
во-вторых обе эти платформы подойдут прекрасно
во-третьих в случае с джавой есть возможность проехаться на спине JIT

но если у вас такие серьезные намерения
я честно говоря буду уже (если меня спросят) советовать либо менять платформу вообще, либо эти ресурсы инвестировать в eaccellerator. да!
или в сам php в той части которая zend_execute
на мой взгляд это даст намного больше в целом.
что вот эти, простите, потуги
акселлератору тому-же теоретически ничего не мешает стать и компиляторам
кто-нибудь до этого доберется через n-лет.

другой вопрос, который кажется, поднял фишер это прототайпинг на пхп, я правильно понял?
это совсем другая степь
если кто-то считает что это эффективно - vim ему в руки.
я так не считаю
но это неважно
если кто-то может быстро построить прототип на пхп для последующей имплементации на си (не трансляции, а реализации руками) это его личное дело.
 

texrdcom

Новичок
Зачем это надо - более подробно,
Иногда нужна скорость большая чем может предоставить php
во вторых любую программу на си понятно можно откопилировать
как для виндузы так и для линуха и не ненужен установленный php
для её запуска.
Вопрос в следующем возможно ли написать парсер который будет анализировать php скрипт выискивать функции php в нем и потом искать их исполнения в искходниках php и создавать прогу на cи -?
Я не селен в си, и потому хотел услышать ответ возможно ли такое или нет ? прежде чем пробовать такое написать, и еще возможно хтото видел такие трансляторы ?
 

neko

tеam neko
я вижу что ты не селен.
мне, видит бог, не хочется флеймить.
но прочти пожалуйста еще весь топик целиком.
желательно раза 2.
и поверь, если ты не селен, у тебя тут ничего не выйдет.

вот такие ответы это причина по которой мне либо хочется остатся либо "умником без объяснений" либо вообще не писать в подобные топики.

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

ONK

Пассивист PHPСluba
fisher, я считаю, что пытаться писать ПХП экстеншены в попытке полной реализации функциональности какого то конкретного скрипта это неправильно со всех точек зрения.
1. Нет возможности повторного использования.
2. Нет возможности быстрой модификации.
3. Нет чёткой структуры проекта.
4. ....
5. Общий прирост по сравнение с простым кэшированием опкода будет не так значителен (за исключение особых случаев). После кэширования опкода в большом приложении время исполнения программного кода скрипта становится сопоставимы со временем выполнения запросов к базе данных, то есть даже двухкратного роста скорости выполнения скрипта добиться сложно. Хотя если сравнивать с выполнением не кэшированного ПХП скрипта, то разница будет очень существенной.

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

ПХП акселераторы в основном выигрываю (85% прироста производительности) за счёт кэширования опкода, ещё 10% можно добавить отключив проверку файлов скриптов на модификацию и только 5% прироста это некая оптимизация полученного опкода. Цифры конечно приблизительные но мои эксперименты дают такое соотношение.

Преобразовать ПХП опкод в поток данных и инструкций (байткод) с сохранением всех возможностей, которые даёт ПХП не получится. Или придётся в каждый исполняемый файл дополнительно внедрять экзекутор ПХП кода и код всех стандартных модулей, которые только могут потребоваться, что просто неразумно. Поэтому для ПХП не светит появление ВМ, или это будет уже не ПХП.
 

neko

tеam neko
гы
а на чем оно выполняется по твоему?
это вм и есть
любой язык выполняется на vm, если он не генерирует инструкции (например c,c++,ocaml,forth - их таки генерируют)

вот там и надо работать!
надо пхп-шной машиной
а не лепить трансляторы непонятные

-~{}~ 09.06.05 14:08:

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

если в вас процессор интел пентиум (тм) то gcc сгеренирует из си кода инструкции для вашего процессора.

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

тем кому интересно читать википедию!
 

fisher

накатила суть
2ONK
>>считаю, что пытаться писать ПХП экстеншены в попытке
>>полной реализации функциональности какого то конкретного
>>скрипта это неправильно со всех точек зрения
специально как-то писать-согласен, если мы нашли некий способ сделать это почти автоматом - почему бы нет

2neko
>>другой вопрос, который кажется, поднял фишер это
>>прототайпинг на пхп, я правильно понял?
не только. разница между vm и собранным модулем сюда же.
 

neko

tеam neko
fisher
на самом деле вот Кром тут был прав, что я глупость ляпнул
ты себе не представляешь какая это работа огромная

если у вас есть деньги/люди потратьте это лучше на php/eaccellerator.
 

ONK

Пассивист PHPСluba
neko, я не считаю ПХП экзекутор ВМ. У него другой принцип работы. У нас видимо разное понимание что такое ВМ.
 

fixxxer

К.О.
Партнер клуба
теоретики блин :)
никто не мешает сделать процессор, выполняющий сишный или там пхпшный код. as is.
вот только никто такого делать не будет ибо это идиотизм.
а теоретизировать можно долго если заняться нечем :)
 
Сверху