Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
Если вы — бывший системщик или прикладной программист и не знакомы с языком 
Perl, довольно непросто будет привыкнуть к тому, что PHP, как и большинство 
язы- 
ков для Web, является интерпретатором (правда, как мы уже говорили, с трансли- 
рующим оптимизатором). 
Что ж, это так. Да, сценарии, написанные на PHP, работают в тысячи раз 
медленнее, 
чем Си-программы (но почти с такой же скоростью, как созданные на Perl — может 
быть, отстают максимум в несколько раз на особо критических участках), и к 
этому 
придется привыкнуть. Например, если мы напишем на Си пустой цикл с миллионом 
итераций примерно такого вида: 
for(long i=0; i<1000000; i++); 
то он будет работать всего долю секунды, в то время как аналогичный цикл на 
PHP: 
for($i=0; $i<1000000; $i++); 
проработает на процессоре Pentium 100 несколько секунд. 
Приведенные оценки, особенно сравнения с Perl, касаются только PHP версии 
4, но не версии 3. Последний отстает даже от Perl по быстродействию почти в 
100 раз. Так что стоит задуматься, допустимо ли вообще применять PHP вер- 
сии 3 при написании нетривиальных программ. 
Однако для сценариев, не содержащих в себе таких громадных циклов (а таких про- 

грамм, как мы вскоре увидим, большинство), время работы будет отличаться очень 
несущественно. Ну, в самом деле, какая разница, работает ли сценарий 0,01 
секунды 
или 0,1 секунды, если передача данных по каналам Интернета через модем будет 
длиться, например, 5 секунд? 
Впрочем, тут все-таки есть стимул стараться по возможности ускорить сцена- 
рий: если на вашей машине размещены сотни виртуальных хостов, способных 
работать с PHP, и каждый из них весьма популярен у пользователей Интерне- 
та, то суммарный проигрыш в быстродействии может быть вполне ощутим. 
В этом случае придется просто отказаться от PHP и перейти на более быстрый 
(но и более сложный) язык — например, Си или Java. 
"А как же быть, — спросят некоторые, — если нам нужно написать сценарий для 
работы, скажем, с тысячами и десятками тысяч пользователей, адреса и телефоны 
которых хранятся в файле? Ведь, чтобы найти какого-то пользователя (особенно, 
если 
его имя задано не точно), придется просматривать их всех, а это как раз и будет 
цикл 
с огромным количеством итераций?" Да, это действительно так. Если нужно обраба-

Глава 6. Характеристика языка PHP 109 
тывать очень большие массивы данных, лучше использовать Си или... базу данных. 
База данных — это набор очень большого числа записей с одинаковой структурой 
плюс программное обеспечение для быстрого поиска, добавления и удаления записей 

(чаще всего написанного как раз на Си). PHP поддерживает работу с очень большим 

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

боткой баз данных и эффективных алгоритмов работы с ними занималось множество 
людей. А в PHP останется лишь вызвать нужную функцию (например, поиск в базе 
данных) и сразу получить результат — многие базы данных даже умеют нужным об- 
разом его отсортировать и вообще выполнить всю "грязную работу"... 
У интерпретатора есть и другие преимущества перед классическим компилятором, 
например, перед Си. Вот некоторые из них. 
r Упрощается обнаружение ошибок во время выполнения программы. 
В случае сбоя интерпретатор сразу же выведет сообщение, что что-то не так. 
r Можно не заботиться об освобождении выделенной памяти. Интерпретатор сам 
определит, когда та или иная переменная в программе уже не используется, и ос- 
вободит память, выделенную для нее. 
r Существует возможность написать программу, которая, грубо говоря, будет фор- 
мировать и тут же исполнять другую программу, что очень часто практикуется 
при шаблонной системе организации скриптов. В частности, мы можем формиро- 
вать идентификаторы во время исполнения программы, создавать массивы ано- 
нимных функций и т. д. 
r Не нужно думать о типах переменных (как это, кстати, было сделано в приведен- 

ном цикле for). Мы еще вернемся к данному вопросу в дальнейшем. 
Есть и другие достоинства. Вообще, использование интерпретатора способно дать 
сценариям ту мощь, которую пользователи Web от них и ожидают. 
Но за все нужно платить: эта пресловутая медлительность интерпретаторов, даже с 

блоком трансляции, способна вывести из себя самого закаленного программиста. 
Проигрыш особенно заметен в случае больших и сложных цикло
 
<<-[Весь Текст]
Страница: из 287
 <<-