alrond
Guest
сделал небольшой тест...почему такие результаты?
я сравнивал, что быстрее работает при отдаче статического контента...
ведь не секрет, что малоизменяемые данные лучше хранить в файле, а не в базе.
так вот...
взял два способа вывода...через include и fopen.
читаю один и тот же файл 4 раза и замеряю для каждого раза время выполнения кусочка программы.
порядок работы скрипта:
1) через include
2) через fopen
3) снова через fopen
4) снова через include
кстати, различий между print и echo действительно не обнаружено
а теперь результаты для файлов разного размера с первого запуска скрипта, и с остальных(включается кэширование)...все усредненное
1.2 кб
1) 0.0003
2) 0.0001
3) 0.0001
4) 0.0001
с кэшем то же самое
12кб
1) 0.0008
2) 0.2193
3) 0.0722
4) 0.0007
с кэшем
1) 0.0008
2) 0.0002
3) 0.2195
4) 0.0007
42 кб
1) 0.2904
2) 0.1322
3) 0.0909
4) 0.121
с кэшем
1) 0.02
2) 0.0004
3) 0.36
4) 0.27
209 кб
1) 0.7825
2) 0.8323
3) 0.8348
4) 0.8334
с кэшем тоже самое
ктонибудь может объяснить, почему в случае средних файлов (12 и 42 кб) работа fopen такая?
то есть при первой загрузки первое открытие файла дольше в 2-3 раза, но с кэшированием наоборот! и разница в ТЫСЯЧУ раз!....хотя вроде только что был файл прочитан
и еще fopen при 42 кб с кэшем в 5 раз быстрее первого открытия через инклюд
я проводил тест специально для того, чтобы определить что лучше использовать для организации сайта, частично или полностью использующего статику...
то есть например мини-CMS, где вместо записи в таблицу будет генерироваться один файлик на статью, который потом через инклюд подключается. редактирование не критично...это именно статическая информация..., но вызываемая через PHP
я этот тестик сделал для проверки в реальных условиях...на сервере, то есть где и процессор и настройки и память влияют...
понятно...fopen лучше не использовать....
а вот чем readfile лучше include?
именно для задачи встраивания контента HTML,
понятно, что если код PHP там есть, то реадфайл не прокатит...
Добавлено
только что протестил инклюд и реадфайл...
работают одинаково...токо вот функция, которая идет второй всегда в несколько раз медленнее...
а потом сделал просто вывод на экран двух файлов (по 38кб) обеими функциями и попарно
и оказалось, что время генерации около 0.3
пробовал и с
ob_start();
ob_end_flush();
ob_end_clean();
результат не меняется...
как можно ускорить выполнение этих скриптов?
то есть не может так же быть...чтобы на простое чтение двух файлов уходило так много времени...многие движки форумов работают быстрее...а там файлов подгружается ого-го сколько
Добавлено
что за число может быть такое: 22329
файл с таким размером readfile() обрабатывает микросекунды, если уже 22330, то разница в 500(!!!) раз...
причем не еденичные выполнения скрипта, а усредненное значение...
я так понимаю это связано с ограничением буфера...только какого?
если файлы не выводить в броузер, а только подключать их через инклюд, то время почти не увеличивается....даже если подключается сотня килобайт....
но вот с той цифрой в 22кб все еще не ясно
тест проводил в "боевых" условиях...
то есть я грузил эти тесты на сервер...и уже потом их браузером открывал...
PHP 4.3.3
Apache 2.0.48
SUSE 9.0
я сравнивал, что быстрее работает при отдаче статического контента...
ведь не секрет, что малоизменяемые данные лучше хранить в файле, а не в базе.
так вот...
взял два способа вывода...через include и fopen.
читаю один и тот же файл 4 раза и замеряю для каждого раза время выполнения кусочка программы.
порядок работы скрипта:
1) через include
2) через fopen
3) снова через fopen
4) снова через include
кстати, различий между print и echo действительно не обнаружено
а теперь результаты для файлов разного размера с первого запуска скрипта, и с остальных(включается кэширование)...все усредненное
1.2 кб
1) 0.0003
2) 0.0001
3) 0.0001
4) 0.0001
с кэшем то же самое
12кб
1) 0.0008
2) 0.2193
3) 0.0722
4) 0.0007
с кэшем
1) 0.0008
2) 0.0002
3) 0.2195
4) 0.0007
42 кб
1) 0.2904
2) 0.1322
3) 0.0909
4) 0.121
с кэшем
1) 0.02
2) 0.0004
3) 0.36
4) 0.27
209 кб
1) 0.7825
2) 0.8323
3) 0.8348
4) 0.8334
с кэшем тоже самое
ктонибудь может объяснить, почему в случае средних файлов (12 и 42 кб) работа fopen такая?
то есть при первой загрузки первое открытие файла дольше в 2-3 раза, но с кэшированием наоборот! и разница в ТЫСЯЧУ раз!....хотя вроде только что был файл прочитан
и еще fopen при 42 кб с кэшем в 5 раз быстрее первого открытия через инклюд
я проводил тест специально для того, чтобы определить что лучше использовать для организации сайта, частично или полностью использующего статику...
то есть например мини-CMS, где вместо записи в таблицу будет генерироваться один файлик на статью, который потом через инклюд подключается. редактирование не критично...это именно статическая информация..., но вызываемая через PHP
я этот тестик сделал для проверки в реальных условиях...на сервере, то есть где и процессор и настройки и память влияют...
понятно...fopen лучше не использовать....
а вот чем readfile лучше include?
именно для задачи встраивания контента HTML,
понятно, что если код PHP там есть, то реадфайл не прокатит...
Добавлено
только что протестил инклюд и реадфайл...
работают одинаково...токо вот функция, которая идет второй всегда в несколько раз медленнее...
а потом сделал просто вывод на экран двух файлов (по 38кб) обеими функциями и попарно
и оказалось, что время генерации около 0.3
пробовал и с
ob_start();
ob_end_flush();
ob_end_clean();
результат не меняется...
как можно ускорить выполнение этих скриптов?
то есть не может так же быть...чтобы на простое чтение двух файлов уходило так много времени...многие движки форумов работают быстрее...а там файлов подгружается ого-го сколько
Добавлено
что за число может быть такое: 22329
файл с таким размером readfile() обрабатывает микросекунды, если уже 22330, то разница в 500(!!!) раз...
причем не еденичные выполнения скрипта, а усредненное значение...
я так понимаю это связано с ограничением буфера...только какого?
если файлы не выводить в броузер, а только подключать их через инклюд, то время почти не увеличивается....даже если подключается сотня килобайт....
но вот с той цифрой в 22кб все еще не ясно
тест проводил в "боевых" условиях...
то есть я грузил эти тесты на сервер...и уже потом их браузером открывал...
PHP 4.3.3
Apache 2.0.48
SUSE 9.0