Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
Приветствую всех, кто нибудь пользовался компилятором php и каким?
Имеется у меня сложный php скрипт, который запускается по времени и хорошо грузит процессор, хотелось бы его откомпилировать в exe, чтоб увеличить скорость и снизить нагрузку. Подскажите пожалуйста советом или направьте в нужное русло.
DelphinPRO
Отправлено: 11 Июля, 2013 - 20:17:08
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
нет таких. php - интерпретируемый язык.
Для десктопных приложений существуют специальные инструменты. Из бесплатных - Lazarus (правда еще один язык учить придется )
PS DevelStudio в расчет не беру, ибо это не совсем php (или вовсе не php, хоть и похоже)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
darl
Отправлено: 11 Июля, 2013 - 20:43:46
Новичок
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
Про HPHP читал, но там тоже есть свои подводные камни и пока не особо стабильно работает.
Чем разбираться в этих всех утилитах и подводных камней, думаю так и придется переписать этот скрипт на Си, как раз поближе и познакомлюсь с этим языком.
caballero
Отправлено: 11 Июля, 2013 - 21:04:07
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
переписывание на C еще не означает что перестанет грузить
если по уму то сначала надо найти чего именно грузит
может и переписывать не придется
Цитата:
как раз поближе и познакомлюсь с этим языком
Си это не PHP там надо очень хорошо уметь програмировать а не просто познакомится. Иначе будет целый букет проблем начиная от мемори ликов заканчивая рантайм ошибками доступа к памяти которые будешь вылавливать неделями. не говоря уже о намного более трудоемкой разработке. Или ты думаешь что Си это как PHP только в exe файл компилится
Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
Я знаю, что не все просто. У меня просто уже есть небольшой опыт программирования на Си
Stierus
Отправлено: 12 Июля, 2013 - 13:11:27
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
darl, тем не менее, определить узкие места перед переписыванием, стоит Php- быстрый язык, не недооценивай его.
Цитата:
который запускается по времени и хорошо грузит процессор
php интерпретируется один раз и потом выполняется, если ты пишешь неоптимальный код, переписывание этого же неоптимального кода на си, теме не поможет.
EuGen
Отправлено: 12 Июля, 2013 - 13:19:24
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero пишет:
Си это не PHP там надо очень хорошо уметь програмировать
Пожалуй, с этим не совсем согласен. Дело не в том, что Си - требует хорошего умения программировать. Дело лишь в том, что он требует от программиста самостоятельного контроля памяти. Это, с одной стороны, даёт возможность очень выборочной оптимизации, но с другой стороны, заставляет думать о многих вещах, которые с этим связаны. Возможность выборочной оптимизации управления памятью не потребуется, думаю, в 99% случаев - по сравнению с теми языками, где этот контроль переложен с программиста на сам язык, то есть в 99% случаев приобретётся дополнительная проблема (управление памятью) - и приобретётся совершенно зря (ведь эта оптимизация могла бы с таким же успехом быть выполнена без участия программиста, если бы речь шла о языке, где есть встроенный контроль памяти).
Конечно, я не утверждаю, что Си плох. Я лишь считаю, что кастомизация работы с памятью потребуется в очень узкоспециализированных задачах, да и там это не сильно превзойдёт работу автоматического контроля. Умение же программировать и уметь работать с памятью - хоть и пересекающиеся задачи, но всё же не совпадающие. Я бы сравнил необходимость в Си (то есть действительно необходимость в полном смысле - когда нельзя обойтись без этого) - со случаями, когда, например, в СУБД Oracle нужно делать подсказки планировщику и эти подсказки действительно улучшают план запроса.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
caballero
Отправлено: 12 Июля, 2013 - 14:36:15
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Дело не в том, что Си - требует хорошего умения программировать. Дело лишь в том, что он требует от программиста самостоятельного контроля памяти.
я имел ввиду под програмированием весь комплекс задач которые надо решать.
Цитата:
Возможность выборочной оптимизации управления памятью не потребуется,
не очень понял что такое в данном контексте "выборочная оптимизация" но управление памятью там нужно всегда даже неоптимизорованное - там нет автомтического сборщика. Зато есть указатели прямо на адреса памяти за которыми надо следить. Конечно использование готовых библиотек типа STL или bootstrap а тем более сред програмирования типа CBuilder сильно упрощает дело. Но все равно - достаточного одного косяка с указателем и получаем трудноуловимую ошибку. не говоря уже о типизации - привыкшим писать на скриптовых языках это будет нехилый напряг.
Если по теме - не думаю что проблема загрузки проца изза PHP. В PHP выполняется байткод как в яве или .NET. А байткод проектируется так чтобы интерпретироватся и выполнятся очень быстро. Скорее всего либо програма неграмотно написана либо теребует множественных вычислений и/или работы с памятью. А это останется проблемой в любом языке.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
caballero пишет:
не очень понял что такое в данном контексте "выборочная оптимизация" но управление памятью там нужно всегда даже неоптимизорованное - там нет автомтического сборщика. Зато есть указатели прямо на адреса памяти за которыми надо следить. Конечно использование готовых библиотек типа STL или bootstrap а тем более сред програмирования типа CBuilder сильно упрощает дело. Но все равно - достаточного одного косяка с указателем и получаем трудноуловимую ошибку. не говоря уже о типизации - привыкшим писать на скриптовых языках это будет нехилый напряг.
Наверное, неясно выразился. Да, там всегда нужно управление памятью. И я рассматриваю эту необходимость с двух сторон. Первая - преимущество: программист имеет возможность сильной кастомизации расхода памяти, то есть это потенциальная возможность сократить расход памяти (если знать, что делать). Вторая - недостаток - программист должен следить за памятью всегда, а не только тогда, когда собирается что-либо оптимизировать в операциях с ней. Так как современные сборщики мусора и другие менеджеры памяти уже очень развиты, то плюс от преимущества почти нивелируется - потому что автоматические системы и без участия программиста почти всегда хорошо работают с памятью. Вот и получается, что, беря заботу о памяти на себя, программист в 99% случаев ничего не приобретает по сравнению со случаем, если бы эта работа делалась автоматически. Оставшийся 1% - это те задачи, когда вручную действительно можно предложить более грамотную работу с памятью, чем если бы это было сделано автоматически.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 12 Июля, 2013 - 14:52:18
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
ТС, интересно, а что делает скрипт?
vanicon
Отправлено: 12 Июля, 2013 - 15:02:55
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
caballero пишет:
В PHP выполняется байткод как в яве или .NET. А байткод проектируется так чтобы интерпретироватся и выполнятся очень быстро. Скорее всего либо програма неграмотно написана либо теребует множественных вычислений и/или работы с памятью. А это останется проблемой в любом языке.
Думаю вам известно что байт код какой виртуальной машинной бы он не выполнялся, хоть ява или нет, он все ровно будет в несколько раз медленнее исполнятся чем машинный код...
----- Так было, так есть и так будет
LIME
Отправлено: 12 Июля, 2013 - 15:11:27
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
vanicon пишет:
в несколько раз медленнее
это ты сильно сильно хватил
с чего такое мнение?
vanicon
Отправлено: 12 Июля, 2013 - 15:12:46
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
LIME
Ну потому что байт код исполняется виртуальный машинной, а машинный код исполняется самим процессором...
----- Так было, так есть и так будет
caballero
Отправлено: 12 Июля, 2013 - 15:19:53
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Думаю вам известно что байт код какой виртуальной машинной бы он не выполнялся, хоть ява или нет, он все ровно будет в несколько раз медленнее исполнятся чем машинный код...
не в несколько раз потому что кроме преобразования в байт код производится также оптимизация выполнения самого алгоритма. кроме того в той же яве для большинства платформ байт код перед выполнием преобразуется в машинный код а потом выполняется.
С другой стороны компилятор С тоже не всегда генерит оптимальный ассемблерный код 9особенно беслатные компиляторы типа gcc). Иногда (например в микроконтроллерах ATMEL) машинный код изначально проектируется так чтобы его проще было генерить компилятором С за счет меньшего удобства ручного написания. В процах типа X86 исторически так сложилось код больше пригоден для написания ассемблера вручную но хуже для генерации компилятором.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.