Подсчет примитивных операций, нотация Big O

#java #primitive #operations

#java #примитив #операции

Вопрос:

Допустим, у меня есть вызываемая переменная, мне было интересно, сколько примитивных операций содержится в инструкции int count :

 count  ;
  

Будет ли это 3? Потому что, если вы запишете это в другой форме, например:

 count = count   1; 
  

Он имеет 1 чтение, 1 операцию и 1 запись. Таким образом, это означало бы, что оператор count считается 3 примитивными операциями, верно?

Комментарии:

1. После того, как код был оптимизирован для машинного кода, это может быть всего одна инструкция

Ответ №1:

Да, это можно рассматривать как 3 операции. Это означает, что это постоянное число операций, поэтому для обозначения Big O это то же самое, как если бы было только 1 операция или 10, при условии, что оно постоянное.

Ответ №2:

На большинстве процессоров (или виртуальных машин, поскольку вы отметили свой вопрос тегом «java») существует специальная инструкция для увеличения значения на некоторую небольшую величину.

т.е. см. https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings — iinc

Поэтому я бы посчитал простое приращение как 1 примитивную операцию (хотя внутренне оно все равно выполняется как чтение-приращение-запись).