[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Какой вариант будет быстрее работать?
ak167
Всем привет!
Имеется самодельный движок, в котором шаблону подключаются несколько файлов кэша, содержащие данные, которые потом передаются переменным $menu, $rubrics и $cloud.

Есть два вариант подключения:

1. Вариант.
Сделать три файла menu.cache, rubrics.cache и cloud.txt. В файле index.php в самом коде прописываем:


$cloud = file_get_contents('gs_blog/includes/cloud.txt'); // подключаем облако
$menu = file_get_contents('gs_blog/cache/menu.cache'); // подключаем кэш меню
$rubrics = file_get_contents('gs_blog/cache/rubrics.cache'); // подключаем кэш рубрик (категорий)


2. Вариант.
Делаем один файл, назовём его cache.php и в нём пишем:

<?php
$cloud = 'HTML'; // подключаем облако
$menu = 'HTML'; // подключаем кэш меню
$rubrics = 'HTML'; // подключаем кэш рубрик (категорий)
?>


Затем в файле index.php подключаем созданный файл:
include 'includes/cache.php';


Какой из этих вариантов будет работать быстрее?
GET
ak167

3 файл-запроса vs 1

+ в инклюде можно разместить динамику PHP (например связанную с мультиязычностью контента), если вдруг однажды понадобится + в file_get_contents можно получить warning если файла нет, а в некоторых способах инклюдах нет.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
jetistyum
Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды.
ak167
Цитата (jetistyum @ 23.07.2016 - 19:51)
Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды.

jetistyum, так и сделал. Первый вариант выполнялся за 0,4 секунды, а второй всего за 0,25.
Гость_Fart
Цитата (ak167 @ 24.07.2016 - 13:45)
Цитата (jetistyum @ 23.07.2016 - 19:51)
Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды.

jetistyum, так и сделал. Первый вариант выполнялся за 0,4 секунды, а второй всего за 0,25.

начать стоит с того что: немного не ясно для каких целей создается куча кеш-файлов. у обоих вариантов вообще разные назначения. 1 - для временного хранения, 2 - для постоянного (замена БД).

если первый вариант будет правильно организован и создается 1 кеш файл с json данными например (создавая что-то вроде псевдо-сессии), то скорость 1 варианта будет как и у 2 варианта.

если ты пытаешься создать кеш без каких либо изменений во 2 варианте и тут не факт, что скорость может быть лучше, так как при доп инклудах - скорость выполнения скрипта увеличится.

к тому же не только скорость важна, так как создавая новые переменные и прочее увеличивается нагрузка на цп + озу у сервера. 1 запрос он да - не особо напрягать будет, а при серьезных нагрузках ощутимо будет на косячных вирт. хостах.
jetistyum
А на практике какая разница от всего этого ? нужно ли там вообще кэширование? нужно ли его организовывать на подключаемых файлах, или может сделать кэш на уровне nginx?
заметна ли глазу разница в 0.0...2 сек ? чтобы вообще заморачиваться с этим?
GET
Цитата
А на практике какая разница от всего этого ? нужно ли там вообще кэширование? нужно ли его организовывать на подключаемых файлах, или может сделать кэш на уровне nginx?
заметна ли глазу разница в 0.0...2 сек ? чтобы вообще заморачиваться с этим?


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

Ещё, на практике, для таких случаев тесты не делают, ну как мне кажется. Почему? Потому, что надо просто спокойно сесть и внимательно подумать, поразмышлять. Тесты не панацея, ситуации где они показывают ранжирование результатов очень даже не однозначны. И вполне могут быть ошибочными, или стать такими через год, например, при другой нагрузке, или даже через день - только потому, что где-то изменился узел подключения и всё стало потихоньку есть ресурсы.


Ну, а если всё таки тест сделан, то размышлять в духе "заметна ли глазу разница в 0.0...2 сек ?" как-то не по программистки что-ли, правильно стоило бы написать значителен ли будет прирост в скорости на 62,5%? И так же по программистки ответить самому себе - Конечно!

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
сакраментальный вопрос, как ты решишь вопрос инвалидации кеша?)
Zzepish
jetistyum
на этапе обучения - очень тупой совет!
Потом и будет сидеть на "библиотеки, движки, фреймворки" не зная основ!
jetistyum
Zzepish Давай не будем оскорблять друг друга.

То что он делает, это не основы, а изобретение велосипеда. Он и так не знает основ. И врядли их узнает, если будет свои велосипеды строить, не читая чужой.
Я вот не знаю как внутри устроена функция file_get_contents() а так же драйвер файловой системы, который используется для чтения файлов на низком уровне, да мне и не нужно это знать, ведь есть простой интерфейс - в данном случае ф-я file_get_contents().

Так же и с кодом, скачал фреймворк, и написал и работает. $cache->get(), $cache->set(), в конфигурации указал провайдер кэширования: файловая система, или Redis сервер...
Если хочется разобраться как устроено - открываешь исходники фреймворка и смотришь. Над ним трудились довольно умные люди, переймешь хорошие практики.

Более того, сейчас рынку нужны только те программисты, которые работают с библиотеками и фреймворками. Вот и задумайся, на что тратить время.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.