Что более дорогое, сравнение или назначение?

Я начал читать Algorithms, и я продолжаю задаваться вопросом, когда речь идет о примитивах того же типа, что является более дорогостоящей операцией, присвоение или сравнение? Много ли это между языками?

Ответы

Ответ 1

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

Как только вы это сделаете, я советую посмотреть, как улучшить код и местоположение данных, потому что промахи в кеше почти наверняка хуже, чем субоптимальные инструкции.

Это делается в довольно странном случае, когда вы можете использовать либо подход, основанный на назначении, либо метод сравнения, попробуйте оба и время их. Микро-оптимизация - игра чисел. Если числа недостаточно хороши, узнайте, почему, а затем убедитесь, что то, что вы делаете, действительно работает.

Итак, что вы понимаете под сравнением? Условные переходы вызывают проблемы для любого смутно современного процессора, но разные процессоры делают разные вещи, и нет никакой гарантии, что любой из них замедлит работу. Кроме того, если какой-либо из них приводит к промаху в кеше, это, вероятно, медленнее, независимо от того, что.

Наконец, языки обычно скомпилированы в машинный код, и простые вещи, такие как сравнения и назначения, обычно будут скомпилированы одинаково. Большая разница будет типом процессора.

Ответ 2

Как вы думаете?

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

Но зачем вам это делать? Вы не должны заботиться о производительности на этом уровне. Оптимизируйте для Big-O