X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Многократное включение кода
alexdrob
alexdrob
Topic Starter сообщение 23.6.2011, 3:17; Ответить: alexdrob
Сообщение #1


[PHP]<?php

function get_sec()
{
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
return $mtime;
}

$t1 = get_sec();
$template = '?>' . file_get_contents('1.html');
for ($i = 0; $i < 100; $i ++) {
eval($template);
}
$t1 = get_sec() - $t1;

$t2 = get_sec();
for ($i = 0; $i < 100; $i ++) {
include '1.html';
}
$t2 = get_sec() - $t2;


echo "$t1<br/>$t2";

?>
[/PHP]
1.html
<ul>
<li><?php echo $i ?></li>
</ul>


Имеем вот такую разницу:
0.00078296661376953
0.011742115020752


то есть eval гораздо быстрее выполняет, более чем в 10 раз, и даже если раскопировать код из html файла 20-30 раз, eval всё равно в 5 раз быстрей.

но я обнаружил не так давно что в пхп 7000+ функций :D
Может есть способы ещё быстрей чем eval?

возможно как то один раз подключенный файл функцией include можно вызвать много раз? без использования eval
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BigBoy_hb
BigBoy_hb
сообщение 23.6.2011, 3:29; Ответить: BigBoy_hb
Сообщение #2


никогда над этим раньше не задумывался)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 23.6.2011, 3:37; Ответить: alexdrob
Сообщение #3


Я сам сегодня первый раз задумался, и то случайно узнал такую разницу.
Встал вопрос о многократном включении кода типа
<a href="тут что то">тут что то</a>

десятки и сотни раз.
и обнаружил что инклуд как то не хорошо справляется с этим.
попробовал eval, он лучше, но str_replace практически на таком же уровне,
0.0019371509552002 //eval
0.013731002807617 // include
0.00099897384643555 //str_replace

хотя в 2 раза и отстаёт. Это результаты для 4х замен.

Но вот беда, в коде могут быть не только замены но и массивы, типа
<a href="тут что то"><?php foreach () {?>что то<?php } ?></a>

а тут уже с str_replace просто не обойтись одним вызовом. и тут eval победил :)
да и в коде вообще может встретится вызов функции, вообщем str_replace не устраивает :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 23.6.2011, 3:38; Ответить: ZhukV
Сообщение #4


По сути значит разница в функциях - file_get_contents && include.
Скорее всего что при include идет больше проверок.
Мне кажется, что использовании функции fopen -> fread -> fclose - даст лучшую скорость, но не уверен!

Попробуй еще require $file
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 23.6.2011, 3:44; Ответить: alexdrob
Сообщение #5


ну это скорость загрузки файла в переменную, тут не проблема поэкспериментировать :)
хотя... наверное всё равно быстрей чем с eval не выйдет.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 23.6.2011, 3:44; Ответить: alexdrob
Сообщение #6


(ZhukV @ 23.6.2011, 06:38) *
require $file

не получится, он подключается до выполнения скрипта.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
Topic Starter сообщение 23.6.2011, 4:08; Ответить: alexdrob
Сообщение #7


<ul>
{for items}<li>{item}</li>{end}
</ul>

Да уж, я наверное откажусь и от eval

Даже имея массив в коде, str_replace при небольшом шаблоне всё равно выигрывает в скорости.
[PHP]$t3 = get_sec();
$template = file_get_contents('1.html');
preg_match('/^(.*){for (.*)}(.*){end}(.*)$/Us',$template,$match);
var_dump($match);
$str = $match[1];
foreach ($$match[2] as $item) {
$str .= str_replace('{item}', $item, $match[3]);
}
$str .= $match[4];
echo $str;
$t3 = get_sec() - $t3;

echo "$t3";[/PHP]
[PHP]0.00078296661376953 // eval
0.0004730224609375 // str_replace[/PHP]

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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыДайте, пожалуйста, фрагмент кода на джаваскрипте для калькулятора на сайте
3 re-search 1379 7.7.2019, 15:20
автор: web-coder
Открытая тема (нет новых ответов) Чистка вредного кода на сайтах WP
0 SkyFire 2301 24.12.2017, 11:30
автор: SkyFire
Открытая тема (нет новых ответов) Нужна помощь в изменении кода сайта.
6 sanuzelservice 5920 2.12.2015, 15:07
автор: -sanuzelservice-
Горячая тема (нет новых ответов) Услуги по валидации кода
37 alizid1 14070 31.1.2015, 15:02
автор: kstnews
Открытая тема (нет новых ответов) Шаблоны для word press, нужен человек, знающий HTML кода, умеющий их редактировать.
0 DmitryPro 2981 21.6.2014, 15:02
автор: -Mr.Usluga-


 



RSS Текстовая версия Сейчас: 24.4.2024, 6:47
Дизайн