Это абсолютно несопоставимые вещи.
Фактически, изменение размера изображений на лету похоже на запуск DoS-атаки на ваш собственный сервер. Для изменения размера одного обычного изображения требуется больше ЦП и ОЗУ, чем для обслуживания одного обычного запроса к php-скрипту. Это УЖЕ оказывает огромное влияние на производительность. Но обычная миниатюра показывается не одна, а в цифрах. Таким образом, показывая только одну страницу галереи, вы создаете десятки процессов с большой нагрузкой, увеличивая нагрузку на сервер в десять и более раз.
Быстрый и грязный тест, чтобы подтвердить мои слова: давайте попробуем изменить размер относительно небольшого 1,3-мегапиксельного изображения.
$ /usr/bin/time --format="%MK mem %Es CPU time" /usr/bin/convert angry_birds_1280x800.jpg -resize 100x100 thumb.jpg
10324K mem 0:00.10s CPU time
Это заняло у нас 0,1 с, поэтому отображение 10 изображений для предварительного просмотра отнимет целую секунду вашего процессорного времени. Правильно написанная страница галереи PHP займет около 0,01 секунды. Таким образом, изменяя размер на лету, вы увеличиваете нагрузку на сервер в 100 раз.
То же и с памятью. Каждый процесс изменения размера потребляет не менее 10 МБ памяти (для изменения размера файла изображения размером 100 КБ!), А общая сумма составляет 100 МБ. В то время как обычный предел памяти для сценария PHP составляет всего 8 МБ, и он редко достигается.
Это реальные цифры из жизни.
Несколько забавная вещь, связанная с этой проблемой:
Точно тот же пользователь PHP, который легко выбрасывает 1000000 циклов процессора, в то же время невероятно ревнив, чтобы сэкономить 1 или 2! Это не фигура речи, вот пример того, о чем я говорю:
A похожий вопрос от кого-то, чью большую озабоченность в то же время ничтожно мало, как разница в скорости между константами, переменными или массивами переменных. И кто недавно столкнулся с проблемой исчерпания разрешенного размера памяти, как будто такой катастрофы мало.
На этом сайте есть ТОННА вопросов и ответов, обсуждаются наносекундная разница в скорости любых операций, ответы на них с неиссякаемым достоинством, проводятся тесты миллионов итераций, чтобы показать абсолютно незначительную разницу между однократными операциями в несколько циклов процессора каждая.
И в то же время есть подобные вопросы - по поводу огромной, несравнимой разницы в производительности между двумя подходами, которая кажется автору просто равной.
Это проблема обычного пользователя PHP и этого сайта.
У первых просто нет возможности отличить реальные вещи от микроскопических.
А у последних нет механизма проверки правильности ответов на вопросы - все отвечали с одинаковым энтузиазмом , даже если два вопроса противоречат друг другу (и оба здравого смысла).
person
Your Common Sense
schedule
27.02.2012