TheShock ну я к примеру флоппик ну его нафиг я вообще от всех сатов избавился, сразу проблем убавилось в разы
короче всё нормально, у каждого свой оправданные подход, только почему константы в юникоде зло я так и не понял, ну даже если не зло то почему так думали?
Потому что считается, что PHP: <?php define('MYSQL_FN', '/core/includes/function/db/interface/mysql/'); include(MYSQL_FN.'mysql_pdo.inc'); include(MYSQL_FN.'mysql.inc'); include(MYSQL_FN.'mysqli.inc'); include(MYSQL_FN.'mysql_4.x.inc'); include(MYSQL_FN.'mysql_3.x.inc'); будет работать намного медленнее, чем те же самые инклюды без констант (т.е. без длиных путей, include_path задается вручную когда надо).
[vs], неправильно считается: PHP: <?php echo __FILE__ . "\n"; // /home/shock/Test/Of/Long/Path/Include/Is/Here/test.php define ('PATH', dirname(__FILE__) . "/"); set_include_path(PATH); function generateFiles ($count) { while ($count--) { file_put_contents (PATH . "files/file$count.php", '<?php ?>'); } } // generateFiles(500); $start = microtime (1); for ($i = 500; $i--;) { /** * 0.029134 * 0.029419 * 0.029977 */ // require_once PATH . "files/file$i.php"; /** * 0.032143 * 0.031413 * 0.032290 */ // require_once "files/file$i.php"; } echo number_format(microtime(1) - $start, 6); ?> 0,08853 с констрантой против 0,095846 без константы. То есть инклуд с константой на ~8% быстрее, чем инклуд с помощью set_include_path Обрати внимание — путь достаточно длинен (строка 3)
TheShock У тебя в коде инклюд происходит не по include_path, а по текущей директории, где находится файл + files/ Замени PHP: <? require_once "files/file$i.php" ?> на PHP: <? require_once get_include_path()."files/file$i.php"; ?> и потом глянь на время выполнения =)
теперь. ради интереса, влияет ли вообще на скорость инклудинга длина пути (тот же самый код): PHP: <?php echo __FILE__; // /home/shock/test.php /* ... */ /** * 0.023011 * 0.023272 * 0.022740 */ require_once PATH . "files/file$i.php"; /** * 0.024137 * 0.023736 * 0.023796 */ require_once "files/file$i.php"; /** * 0.023705 * 0.023940 * 0.023781 */ require_once get_include_path() . "files/file$i.php"; /* ... */ ?> видно, что влияет и значительно (время выполнения уменьшилось где-то на 30%) Время — 0,069023 против 0,071669. Разница уменьшилась до 4%. Но все-равно — с константой быстрее. Возможно, это время затрачиваемое на вызов функции get_include_path(), вместо того, чтобы просто взять из памяти значение константы.
TheShock я давно перестал доверять твоим тестам PHP: <?php echo __FILE__ . "\n"; define ('PATH', dirname(__FILE__) . "/"); set_include_path(PATH); function generateFiles ($count) { while ($count--) { file_put_contents (PATH . "files/file$count.php", '<?php ?>'); } } //generateFiles(500); $start = microtime (1); for ($i = 500; $i--;) { /* 0.201839 0.202342 0.199974 */ // require_once PATH . "files/file$i.php"; /* 0.106267 0.135211 0.132182 */ // require_once "files/file$i.php"; } echo number_format(microtime(1) - $start, 6); ?>
глупость какая. ты не можешь рассуждать, как там все устроено, не изучив детально исходники. я практически уверен, что он все-равно подставляет include_path и идет по пути той же длины(разница только в том, будет ли вызвана функция, или нет). пускай кто-то еще проверит тесты, чтобы была объективность, ато я тоже числа с головы написать могу. Важно, чтобы тесты запускались сначала для одного варианта, а потом — для другого, иначе будет лаг, искажающий результат.
тебе видео снять? так и делал у меня в интуитивной памяти сохранилось что при инклюде_пасе lstat вызывается один раз хотя я в этом дейстивительно "null", тем не менее, тесты выше возможно дело в разных настройках сервера пусть кто-нибудь ещё затестит Зы. А у тебя я помню другие тесты тоже "глючили"
Не помню, какую ты ось юзаешь, но это вполне могут быть ньюансы винды. хостятся с реальными проектами все-равно все на никсах ну и. плюс, я юзаю php 5.3 тесты у меня не глючили, а показывали достоверный результат, хотя и малость больше, чем у тебя. заметь, в теме с тестами у меня все результаты тестов равносильны результатам тестов у остальных для каждого инклуда оно вызывается один раз в любом случае хотел попредполагать, но потом подумал, что я не могу рассуждать о способе взаимодействия php с файловой системой, т.к. не имею знаний об этом пускай еще пару человек потестит (желательно, на разных системах) и уже тогда посмотрим, какая статистика получится. И еще, желательно, выдать не по три результата, раз такая пьянка, а, хотя-бы, по семь.
Ну хватит вам доказывать, лучше бы разобрались в чем действительное отличие, серваков или еще че там, настройки мож какие...
кстати, может, отличие в том, что ты юзаешь Denwer с его виртуальными дисками и при обращении к файлу ты обращается не к файловой системе, а к Денверу, который уже обращается к виртуальной системе. А с set_include_path Денвер, может работает лучше. Проверь еще в консоли без всяких прокладок. Ибо Денвер на серваках не юзают.
ну да. неправильно настроенный include path работает на 30% медленнее, чем правильно-настроенный, потому что include path парсит пути и по-очереди их подключает, из-за чего может быть задержка. Про сравнение с константой там речи нет.