биты сдвига и умножение в PHP

У меня есть следующий код:

<?php
$start = 1;

$timestart = microtime(1);
for ($i = 0; $i < 1000000; $i++) {
    $result1 = $start * 4;
}
echo "\n";
echo microtime(1) - $timestart;
echo "\n";

$timestart = microtime(1);
for ($i = 0; $i < 1000000; $i++) {
    $result2 = $start << 2;
}
echo "\n";
echo microtime(1) - $timestart;
echo "\n";

Это выводит:

0.14027094841003

0.12061500549316

Я нашел в Интернете вопрос для собеседования в Google (на который я хотел подать заявку на разработчика, но понимаю, что не могу), и в одном из вопросов был задан вопрос, как быстрее всего умножить число. Моей первой мыслью было использовать знак * , поэтому я протестировал его.

У меня вопрос, почему сдвиг битов происходит быстрее, чем умножение?

21
задан kevinji 24 November 2011 в 03:45
поделиться