Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Правда ли, что работа с индексированными переменными всегда замедляет время счёта вдвое?

Там, где быстродействие важно, я стараюсь избегать индексированных переменных. Например, имея три совершенно однотипных блока, я обозначаю в них переменные как А1, А2 и А3. Вместо того, чтобы написать один блок, и обозначить в нём переменные как A(k).
Правильно ли я делаю? И существует ли другой способ, чтобы текста писать меньше, а быстродействие сохранилось бы на прежнем уровне?
ПрограммированиеМатематика
Дмитрий Маштаков
  ·   · 1,9 K
Лучший
программист  · 12 окт 2021
Ответ на вопросы:
  • Нет неправда
  • Сложно сказать. Зависит от вашего тулчейна и вашего опыта в программировании.
Писать код надо наиболее понятным для человека способом.
Если у вас, с точки зрения задачи "индексированные переменные" - так и заводите коллекцию.
Если у вас с точки зрения задачи три похожие переменные - дайте им нормальные имена и пользуйтесь.
*) Тут есть примечание со звёздочкой: если вы хотите назвать свои переменные > a1, a2, a3 - то в большинстве случаев вам надо вернуться на шаг назад к дизайну программы, и посмотреть нельзя ли сделать его лучше.
Если же говорить о вашем аргументе про быстродействие - то:
  • во первых утверждение про "всегда быстрее" не верно - и хорошие тулчейны / компиляторы могут положить статический массив на регистры.
  • во вторых я бы присмотрелся насколько вам нужна такая "оптимизация" и не является ли она "преждевременной оптимизацией" (доводы лет 50 как разораны в учебниках и статьях). Если совершенно уверены в нужности такой оптимизации - можете с "perf / *prof" доказать нужность, делайте. Иначе лучше не надо.
Спасибо. Особенно согласен с фразой "Писать код надо наиболее понятным для человека способом". Что касается быстрод... Читать дальше
Научные заметки о жизни: zen.yandex.ru/id/5c434983...  · 13 окт 2021
Нет. Когда-то это было действительно важно. A[I] каждый раз вычислялось, при помощи умножения и сложения. Сейчас любой транслятор цикл по массиву осуществляет при возможности при помощи сдвига, а не расчета от начала массива... Читать далее
Спасибо. Я тоже программирую с 1970-го года и тоже, как и Вы приобрёл привычку обращать внимание на быстродействие... Читать дальше
Разработка  · 12 окт 2021
По сути, правильно было бы сказать, что разницы нет. Но, когда вы используете один и тот же массив, то он будет реже загружаться в кеш процессора, в то время как пременные будут делать это постоянно, а значит работа с массивом... Читать далее
1 эксперт согласени1 эксперт не согласен
Индексированные переменные можно ввести в программу множеством способов. Один из примеров приведён выше, скажем... Читать дальше