Другие языки программирования и технологии

Имеет ли смысл делать такую оптимизацию? для int и для float

например эта функция-метод вызывается каждую итерацию главного цикла

void C::f( float a ){
m_a = a;
}

будет ли улучшение если сделать так?

void C::f( float a ){
if( m_a == a ) return;
m_a = a;
}
Виктор Ни
Виктор Ни
30 070
Метод с проверкой выполняет больше операций, с какой стати он будет выполнятся быстрее?
Это было бы оправдано, будь то, например, что-то зашифрованное (положить значение в hashmap), где пришлось бы выполнить намного больше действий, чем обычное присвоение. Само по себе присвоение лишь вызывает ассемблеровский mov.
Сам посмотри:
Берик Тулебаев
Берик Тулебаев
23 106
Лучший ответ
Parahat Meret А в какой программе ты смотришь нижнюю часть? (язык ассмблера?) Я прост не шарю
Такая оптимизация уже многократно обсуждалась.

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

Однако пользоваться ей безусловно не стоит, ибо на результат влияют сразу несколько факторов, в т. ч. трудоемкость ветвления на данной архитектуре и успешность предсказания условных переходов процессором. Эффект может существенно отличаться в многопоточном окружении, по сравнению с однопоточным. Конкретный ответ может дать только натурный эксперимент при исполнении в вашем конкретном контексте. Иногда овчинка стоит выделки, иногда нет. В любом случае, это микрооптимизация. И смысл рассматривать ее есть только тогда, когда вы сделали все остальные оптимизации.

А анализировать ситуацию с точки зрения количества выполняемых процессорных инструкций, как это сделано в ответе "Яспис Смарагдович" - наивное заблуждение. Никакого смысла считать процессорные инструкции в таких ситуациях на современных платформах нет и уже давно.
Black Power
Black Power
248
Берик Тулебаев Литература? Ссылки?
Ринат Садыханов Хороший ответ. Четко, подробно, строго по существу.