Re: * vs <<
От: Кодт Россия  
Дата: 12.10.04 17:41
Оценка: 12 (1)
Здравствуйте, shem, Вы писали:

Оптимизирующий компилятор может заменить (x * 1024) на (x << 10).
Но если ты умножаешь не на константу, то компилятор будет вынужден оставить (x * y). А дальше уже дело процессора выполнить умножение так быстро, как он может. Скорее всего, это будет медленнее, чем сдвиг (хотя, разумеется, зависит от процессора и от разрядности операндов).
Перекуём баги на фичи!
* vs <<
От: shem  
Дата: 12.10.04 16:47
Оценка:
int a,b,c;
a = 1024;//допустим 1024, хотя ето не важно
b = 4;//или любая степень двойки

//Что быстрее работает?
c = a*b;//это
с = a<<b;//или это

шем
Re: * vs <<
От: Shady Россия  
Дата: 12.10.04 16:49
Оценка:
Здравствуйте, shem, Вы писали:

Сдвиг быстрее. Почитай инфу через гугл если хочешь детальнее разобраться, это страрый трюк.
... << RSDN@Home 1.1.3 stable >>
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re: * vs <<
От: Quintanar Россия  
Дата: 12.10.04 16:52
Оценка:
Здравствуйте, shem, Вы писали:

S>
S>int a,b,c;
S>a = 1024;//допустим 1024, хотя ето не важно
S>b = 4;//или любая степень двойки

S>//Что быстрее работает?
S>c = a*b;//это
S>с = a<<b;//или это
S>

S>шем

Эти две команды делают разные вещи, так что вопрос что быстрее довольно странный. Или имелось ввиду c = a<<2?
Re[2]: * vs <<
От: shem  
Дата: 12.10.04 16:56
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>Здравствуйте, shem, Вы писали:


S>>
S>>int a,b,c;
S>>a = 1024;//допустим 1024, хотя ето не важно
S>>b = 4;//или любая степень двойки

S>>//Что быстрее работает?
S>>c = a*b;//это
S>>с = a<<b;//или это
S>>

S>>шем

Q>Эти две команды делают разные вещи, так что вопрос что быстрее довольно странный. Или имелось ввиду c = a<<2?


а разве
c = a << b;//(b == 4) = true
не эквивалентна
c = a<<2;
c = c<<2;
?
шем
Re[2]: * vs <<
От: shem  
Дата: 12.10.04 16:57
Оценка:
Здравствуйте, Shady, Вы писали:

S>Здравствуйте, shem, Вы писали:


S>Сдвиг быстрее. Почитай инфу через гугл если хочешь детальнее разобраться, это страрый трюк.


пасиба!
шем
Re[3]: * vs <<
От: kaa_t Россия  
Дата: 12.10.04 17:45
Оценка:
Здравствуйте, shem, Вы писали:

S>Здравствуйте, Quintanar, Вы писали:


Q>>Здравствуйте, shem, Вы писали:


S>>>
S>>>int a,b,c;
S>>>a = 1024;//допустим 1024, хотя ето не важно
S>>>b = 4;//или любая степень двойки

S>>>//Что быстрее работает?
S>>>c = a*b;//это
S>>>с = a<<b;//или это
S>>>

S>>>шем

Q>>Эти две команды делают разные вещи, так что вопрос что быстрее довольно странный. Или имелось ввиду c = a<<2?


S>а разве

S>c = a << b;//(b == 4) = true
S>не эквивалентна
S>c = a<<2;
S>c = c<<2;
S>?

a<<1 // a*2
a<<2 // a*4
a<<3 // a*8
Re[3]: * vs <<
От: Quintanar Россия  
Дата: 12.10.04 18:30
Оценка:
Здравствуйте, shem, Вы писали:

>а разве

S>c = a << b;//(b == 4) = true
S>не эквивалентна
S>c = a<<2;
S>c = c<<2;
S>?
S>шем

a<<b != a*b в общем случае
Re[4]: * vs <<
От: shem  
Дата: 12.10.04 21:20
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>Здравствуйте, shem, Вы писали:


>>а разве

S>>c = a << b;//(b == 4) = true
S>>не эквивалентна
S>>c = a<<2;
S>>c = c<<2;
S>>?
S>>шем

Q>a<<b != a*b в общем случае


да, я понимаю
вобщем поэтому и в примере приводил степени двойки

шем
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.