Pull to refresh
3
0
Дмитрий Бергштейн @BreathLess

Пользователь

Send message
Я указал, что если аргумент с хорошим тоном не прокатывает, но программист беспокоится о скорости, это еще один рычаг воздействия, ни в коем случае, не первостепенный.

«Он конечно же воспримет её как руководство к преждевременной оптимизации.»
Мне кажется, это слишком однозначный вывод.
Об этом хорошо очень на phpbench.com написано, советую.
В своей статье, я решил не повторяться, об этом часто пишут, и часто забывают.
Нет, не соглашусь всё-таки.

file_get_contents — он, образно выражаясь, специалист по получению файлов.
simplexml_load_file — дилетант, который хватается за два дела.
Да, это странно, платить каждый месяц, вместо единовременных оптимизаций.
«У нас же веб, тут свои законы и принципы.»

Мы кажется диаметрально противоположны во мнениях.
В вебе, скорость загрузки, прямо влияет на продажи/регистрации/заказы.

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

Стоит денег, потому что секунды собираются в минуты, минуты в часы, и приходится увеличивать количество серверов.

По поводу Фаулера, ничто не мешает писать и быстро и понятно =)
Кхм, вообще-то это как раз таки пример хрестоматийно медленного кода, и проблема с count() очевидна =)
Или это была ирония?
Приведу вам контр-пример.

У меня получение данных, абстрагировано классом, который скрывает реальный источник данных: БД, файлы, мемкешед, веб страница, и предоставляет единый интерфейс.

Я склоняюсь к соблюдению «unix way» и концепции «pipes» не только в целых скриптах, но и в функциях.
Мне нужна логика, которая разбирает xml. И только.

Как раз таки, когда мы берём под контроль процесс получения данных, мы повышаем гибкость и обслуживаемость кода, а не оставляем его на милость «может его и сделают быстрее».
Да, вы очень правильно всё поняли.
Одно дело, прикрутить memcached к начавшему тормозить mysql, другое, grep-ать и search&replace'ить весь код, заменяя куски кода.
Это просто набор полезных ненапряжных привычек.
Ну, подобные проблемы, слава богу, давно в прошлом.
Я помню, в 2004 году, начинал писать свою систему на Athlon XP2400 / 256 RAM под windows, и у меня каждый лишний запрос, «кожей ощущался», можно было на вид определить сколько запросов было =)

В следующих топиках, затрону тему правильной предвыборки и поствыборки из хранилищ данных.
Да, преждевременная оптимизация, обычно связана с неуместным усложнением архитектуры кешированием, предвыборками и т.п.
Я думаю, каждый хоть раз видел код, в стиле:
for ($a = 0; $a < count ($arr); $a++) do();
Кстати, в данном случае, не Котерова надо цитировать, а Дональда Кнута, он всё-таки был раньше.
Например, 30 000 000 хитов в сутки * лишние 50-100 миллисекунд, это уже сотни часов серверного времени. Которые стоят денег.
И эти сэкономленные часы, могут отложить необходимость «железного» масштабирования, на месяц, может быть два.
Если вы бутстраппер, и стараетесь минимизировать расходы, это может сыграть свою роль.

Да и вообще, политики «тормозит — смени железо» и «главное — скорость разработки», приводит к тому, что в моей кубунте, питоньих скриптов скоро будет больше чем бинарников. Ничего против питона не имею, но реально — уже заметно тормозит.
Спасибо, поправлю, переставил места в уме.

time php -r 'for ($a=0; $a<10000; $a++) count($_SERVER);'
php -r 'for ($a=0; $a<10000; $a++) count($_SERVER);' 0,04s user 0,01s system 90% cpu 0,055 total


time php -r 'for ($a=0; $a<10000; $a++) sizeof($_SERVER);'
php -r 'for ($a=0; $a<10000; $a++) sizeof($_SERVER);' 0,03s user 0,02s system 82% cpu 0,061 total
12 ...
19

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity