Re[11]: а как Вам такой кусочек кода ?
От: Pavel Dvorkin Россия  
Дата: 31.12.21 01:27
Оценка:
Здравствуйте, alzt, Вы писали:

A>Зависит от ситуации. В большинстве случаев — да. Это реально ни на что не влияет. Если это проект, где нужна скорость и есть бенчмарки, которые показывают, что 2 раза вычислить квадратный корень нельзя, тогда это не подходит. Но в большинстве случаев это будет преждевременной оптимизацией.


Не могу согласиться. Не делать лишние вызовы функции там, где это совсем не нужно? , более того, очевидно не нужно — это не преждевременная оптимизация, а просто правила написания хорошего кода.

A>Это означает, что пора создавать класс, который будет иметь функции someFuncWithClearName, someOtherFuncWithClearName и т.д. и кешировать свои данные, чтобы этот корень дважды не вызывался.


Тоже не могу согласиться. Заводить новый класс ради таких пустяков, тратить бог знает сколько памяти на это кеширование — с хорошей точностью хранить таблицу квадратных корней без серьезного расхода памяти невозможно, а обычное хеширование приведет к существенной просадке скорости, так как на одну машинную команду FSQRT будет приходиться десяток-два команд для поиска в хеш-таблице Да и смысла в этом нет, так как основная идея кеширования — повторяемость запросов, а тут этого ждать не приходится.

>Тормозить по факту будет что-то другое.


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

>А может вообще пора наплодить интерфейсов, написать фабрик и декораторов.


М-да...


>И я не утрирую и не иронизирую. Зависит от ситуации, но почти всегда это будет лучше, чем то, что было описано выше. Потом менять что-то будет сильно проще. И не обязательно брать какого-то волшебного человека, который в этом разбирается, досаточно просто обычного программиста.


Только с этим согласиться могу. Найти программиста, который ради четырех строчек вычисления корней квадратного уравнения наплодит новые классы, интерфейсы, декораторы и прочие паттерны, сделает код на сотню строк, потратив на это полдня — тут и впрямь проблемы нет.

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

Поэтому продолжать не буду. За тобой, конечно, право на ответ.

С Новым Годом!
With best regards
Pavel Dvorkin
Re[12]: а как Вам такой кусочек кода ?
От: alzt  
Дата: 01.01.22 20:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Не могу согласиться. Не делать лишние вызовы функции там, где это совсем не нужно? , более того, очевидно не нужно — это не преждевременная оптимизация, а просто правила написания хорошего кода.


Я не понял о чём это предложение. Вызов функции является способом оформить свои мысли, и это является правилом написания хорошего кода.
Если ты про тоже — то я согласен.

PD>Тоже не могу согласиться. Заводить новый класс ради таких пустяков, тратить бог знает сколько памяти на это кеширование — с хорошей точностью хранить таблицу квадратных корней без серьезного расхода памяти невозможно, а обычное хеширование приведет к существенной просадке скорости, так как на одну машинную команду FSQRT будет приходиться десяток-два команд для поиска в хеш-таблице Да и смысла в этом нет, так как основная идея кеширования — повторяемость запросов, а тут этого ждать не приходится.


А при чём здесь кеширование? В С++ никаких накладных расходов на класс не будет. Если это Java, то там вообще никого не волнует производительность. Основные проблемы с кодом случаются не из-за производительности, а из-за того, что другим программистам сложно читать код и они не понимают, что происходит. Класс упрощает эту задачу. Понятно, что будут задачи, где один толковый человек с опытом сможет разобраться за пару часов, и там важна скорость. Тогда да — к чёрту красивый код, пусть пишет так, чтобы работало быстро. Но обычно по другому.

PD>Только с этим согласиться могу. Найти программиста, который ради четырех строчек вычисления корней квадратного уравнения наплодит новые классы, интерфейсы, декораторы и прочие паттерны, сделает код на сотню строк, потратив на это полдня — тут и впрямь проблемы нет.


Все эти декораторы по факту упрощают дальнейшую работу с кодом. Если что-то надо добавить, то знаешь, что у тебя полно тестов и можно менять код. И достаточно найти место, где описывается некоторая логика, и всё. Не надо знать 10 тысяч правил как этот код работает и где будут сайд эффекты. И почти всегда на скорость это не влияет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.