int a=1,b=2;
int c=29464,d=347653;
Есть две операции op1
и op2
:Арифметические операции время в C
op1: add1=a+b;
op2: add2=c+d;
Какая операция занимает больше времени?
int a=1,b=2;
int c=29464,d=347653;
Есть две операции op1
и op2
:Арифметические операции время в C
op1: add1=a+b;
op2: add2=c+d;
Какая операция занимает больше времени?
На «обычном» процессоре с «обычным» компилятором, в принципе, оба они будут выполнять одинаковое время (обычно add
между двумя регистрами собственного размера принимает одно и то же время независимо от значений операнда) ,
Ото, на современных процессорах это довольно трудно измерить время, затраченное на конкретной инструкции, так как фактические пропускная способность в значительной степени зависит от состояния трубопровода, если есть зависимость по данным, если ветвь предсказатель правильно угадывает и все. Итак, если эта операция для какой-то причудливой причины имеет какую-то зависимость от данных (скажем, значение a
изменяется в условном выражении) или - не дай бог - должно быть извлечено из памяти (=> введите механизм кэширования) совершенно другая игра, и единственная безопасная ставка - это ее измерение.
Но, скорее всего, обе операции потребуют ровно нулевого времени; любой современный компилятор с включенными оптимизациями будет выполнять постоянное размножение и складывание выражений, поэтому исполняемый файл вывода будет просто иметь результаты ваших операций, встроенных в испускаемые инструкции, в качестве непосредственных значений.
Вы должны были поговорить о сложности кода здесь, вместо времени выполнения! В идеальной (беспристрастной) среде оба будут O (1). –
IMHO Оба приведут к одной и той же инструкции ассемблера, и 64-битный процессор может добавить любое 64-битное число в то же время, я предполагаю. –
на 16-битной архитектуре или меньше, 1 будет быстрее, чем 2. На большинстве других это то же самое –