У меня есть следующий код:
<?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 (который я хотел бы подать заявку на разработчика, но я понимаю, что не могу), и один из вопросов спросил, что самым быстрым способом было умножить число. Моя первая мысль заключалась в использовании знака *
, поэтому я его протестировал.
Мой вопрос в том, почему смещение битов происходит быстрее, чем умножение?