например эта функция-метод вызывается каждую итерацию главного цикла
void C::f( float a ){
m_a = a;
}
будет ли улучшение если сделать так?
void C::f( float a ){
if( m_a == a ) return;
m_a = a;
}
Другие языки программирования и технологии
Имеет ли смысл делать такую оптимизацию? для int и для float
Метод с проверкой выполняет больше операций, с какой стати он будет выполнятся быстрее?
Это было бы оправдано, будь то, например, что-то зашифрованное (положить значение в hashmap), где пришлось бы выполнить намного больше действий, чем обычное присвоение. Само по себе присвоение лишь вызывает ассемблеровский mov.
Сам посмотри:

Это было бы оправдано, будь то, например, что-то зашифрованное (положить значение в hashmap), где пришлось бы выполнить намного больше действий, чем обычное присвоение. Само по себе присвоение лишь вызывает ассемблеровский mov.
Сам посмотри:

Parahat Meret
А в какой программе ты смотришь нижнюю часть? (язык ассмблера?) Я прост не шарю
Такая оптимизация уже многократно обсуждалась.
Такая оптимизация, как ни странно, может дать весьма заметный положительный эффект из-за того, что "ненужная" запись в память приводит к инвалидации процессорного кэша и, естественно, сопутствующей потере производительности. Выполняя предварительную проверку вы избегаете этой записи. Положительный эффект от сохранения валидности процессорного кэша зачастую превосходит потери на дополнительную проверку.
Однако пользоваться ей безусловно не стоит, ибо на результат влияют сразу несколько факторов, в т. ч. трудоемкость ветвления на данной архитектуре и успешность предсказания условных переходов процессором. Эффект может существенно отличаться в многопоточном окружении, по сравнению с однопоточным. Конкретный ответ может дать только натурный эксперимент при исполнении в вашем конкретном контексте. Иногда овчинка стоит выделки, иногда нет. В любом случае, это микрооптимизация. И смысл рассматривать ее есть только тогда, когда вы сделали все остальные оптимизации.
А анализировать ситуацию с точки зрения количества выполняемых процессорных инструкций, как это сделано в ответе "Яспис Смарагдович" - наивное заблуждение. Никакого смысла считать процессорные инструкции в таких ситуациях на современных платформах нет и уже давно.
Такая оптимизация, как ни странно, может дать весьма заметный положительный эффект из-за того, что "ненужная" запись в память приводит к инвалидации процессорного кэша и, естественно, сопутствующей потере производительности. Выполняя предварительную проверку вы избегаете этой записи. Положительный эффект от сохранения валидности процессорного кэша зачастую превосходит потери на дополнительную проверку.
Однако пользоваться ей безусловно не стоит, ибо на результат влияют сразу несколько факторов, в т. ч. трудоемкость ветвления на данной архитектуре и успешность предсказания условных переходов процессором. Эффект может существенно отличаться в многопоточном окружении, по сравнению с однопоточным. Конкретный ответ может дать только натурный эксперимент при исполнении в вашем конкретном контексте. Иногда овчинка стоит выделки, иногда нет. В любом случае, это микрооптимизация. И смысл рассматривать ее есть только тогда, когда вы сделали все остальные оптимизации.
А анализировать ситуацию с точки зрения количества выполняемых процессорных инструкций, как это сделано в ответе "Яспис Смарагдович" - наивное заблуждение. Никакого смысла считать процессорные инструкции в таких ситуациях на современных платформах нет и уже давно.
Берик Тулебаев
Литература? Ссылки?
Ринат Садыханов
Хороший ответ. Четко, подробно, строго по существу.
Похожие вопросы
- Имеет ли смысл учить программирование?
- Имеет ли смысл учить PascalABCNET в начале обучения?
- Про новый Фотошоп. Народ, кто разбирается. Скажите, имеет ли смысл переходить на CS-5?
- Имеет ли смысл учить Pascal для того, чтобы проще было учить более современные языки (Например, perl, C/C++)?
- windows xp sp3 устарел? имеет ли смысл переходить на windows 7?
- Имеет ли смысл посещать курсы Photoshop за деньги ?
- Возможно ли написать вирус на ассемблере, чтобы даже касперский не обнаружил?Имеет ли смысл использовать язык низ. уровн
- Имеет ли смысл учить много языков или лучше сконцетрироваться на одном?
- Имеет ли смысл в наше время изучать DirectX?
- Здравствуйте, имеет ли смысл становиться программистом?