Задать вопрос
@Urukhayy

Является ли наличие двух одинаковых констант в коде признаком не оптимальности решения?

Является ли наличие двух одинаковых констант в коде признаком не оптимальности решения?

А если такие дублирующиеся константы будут занимать свыше 1.5 килобайта ОЗУ?
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Зависит от длины константы. Что короче - загрузить её в регистр непосредственно в команде, или взять из памяти (указав в команде адрес)? Сильно зависит от процессора.
В целом, одинаковые константы в алгоритме это не страшно. Хуже, когда одно и то же условие приходится проверять много раз. Или, что ещё страшнее, условия, следующие одно из другого (проверили, что a < b, а потом проверяем, что a+c < b+c). Такое часто встречается в геометрии. И в этом случае над алгоритмом стоит поработать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
KorsaR-ZN
@KorsaR-ZN
Это что за такая константа на 1.5 КБ?
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
что за константа такая свыше 1,5 килобайта?
А если по сути если она используется часто то лучше их объеденить, т.к. если она одна она будет чаще попадать в кэш и соответственно будет выше производительность, если же их будет 2 она будет переписываться в кэше и больше времени нужно будет чтобы ее в кэш вернуть
Ответ написан
@Eddy_Em
Назову как минимум 1 случай, когда это нужно: если вы храните в микроконтроллере некоторые массивы констант и хотите заодно иметь возможность "отката" на "заводские". В этом случае один массив предусматривает перезапись и хранится либо в EEPROM либо в выровненной странице флеша (если у вас мелкоконтроллер без EEPROM). А второй просто размещается как компилятору будет угодно.
А вот если вы для компьютера пишете, то тут уже разбираться надо, возможно, такое дублирование тоже будет иметь какой-то смысл.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы