Я указал, что если аргумент с хорошим тоном не прокатывает, но программист беспокоится о скорости, это еще один рычаг воздействия, ни в коем случае, не первостепенный.
«Он конечно же воспримет её как руководство к преждевременной оптимизации.»
Мне кажется, это слишком однозначный вывод.
У меня получение данных, абстрагировано классом, который скрывает реальный источник данных: БД, файлы, мемкешед, веб страница, и предоставляет единый интерфейс.
Я склоняюсь к соблюдению «unix way» и концепции «pipes» не только в целых скриптах, но и в функциях.
Мне нужна логика, которая разбирает xml. И только.
Как раз таки, когда мы берём под контроль процесс получения данных, мы повышаем гибкость и обслуживаемость кода, а не оставляем его на милость «может его и сделают быстрее».
Да, вы очень правильно всё поняли.
Одно дело, прикрутить memcached к начавшему тормозить mysql, другое, grep-ать и search&replace'ить весь код, заменяя куски кода.
Это просто набор полезных ненапряжных привычек.
Ну, подобные проблемы, слава богу, давно в прошлом.
Я помню, в 2004 году, начинал писать свою систему на Athlon XP2400 / 256 RAM под windows, и у меня каждый лишний запрос, «кожей ощущался», можно было на вид определить сколько запросов было =)
В следующих топиках, затрону тему правильной предвыборки и поствыборки из хранилищ данных.
Например, 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
«Он конечно же воспримет её как руководство к преждевременной оптимизации.»
Мне кажется, это слишком однозначный вывод.
В своей статье, я решил не повторяться, об этом часто пишут, и часто забывают.
file_get_contents — он, образно выражаясь, специалист по получению файлов.
simplexml_load_file — дилетант, который хватается за два дела.
Мы кажется диаметрально противоположны во мнениях.
В вебе, скорость загрузки, прямо влияет на продажи/регистрации/заказы.
В desktop-приложениях, обычно можно подождать, оно же уже стоит.
Это как разница между сферой услуг и производством.
Стоит денег, потому что секунды собираются в минуты, минуты в часы, и приходится увеличивать количество серверов.
По поводу Фаулера, ничто не мешает писать и быстро и понятно =)
Или это была ирония?
У меня получение данных, абстрагировано классом, который скрывает реальный источник данных: БД, файлы, мемкешед, веб страница, и предоставляет единый интерфейс.
Я склоняюсь к соблюдению «unix way» и концепции «pipes» не только в целых скриптах, но и в функциях.
Мне нужна логика, которая разбирает xml. И только.
Как раз таки, когда мы берём под контроль процесс получения данных, мы повышаем гибкость и обслуживаемость кода, а не оставляем его на милость «может его и сделают быстрее».
Одно дело, прикрутить memcached к начавшему тормозить mysql, другое, grep-ать и search&replace'ить весь код, заменяя куски кода.
Это просто набор полезных ненапряжных привычек.
Я помню, в 2004 году, начинал писать свою систему на Athlon XP2400 / 256 RAM под windows, и у меня каждый лишний запрос, «кожей ощущался», можно было на вид определить сколько запросов было =)
В следующих топиках, затрону тему правильной предвыборки и поствыборки из хранилищ данных.
for ($a = 0; $a < count ($arr); $a++) do();
И эти сэкономленные часы, могут отложить необходимость «железного» масштабирования, на месяц, может быть два.
Если вы бутстраппер, и стараетесь минимизировать расходы, это может сыграть свою роль.
Да и вообще, политики «тормозит — смени железо» и «главное — скорость разработки», приводит к тому, что в моей кубунте, питоньих скриптов скоро будет больше чем бинарников. Ничего против питона не имею, но реально — уже заметно тормозит.
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