есть ли разница в производительности между этими двумя?
$bin = 1000 //8 in decimal
$bin_a = strrev($bin);
$bin_a = str_split($bin_a);
или же
$bin_b = str_split($bin);
$bin_b = array_reverse($bin_b);
или есть какая-либо функция для преобразования строки в массив и обратно одновременно?
Я хочу, чтобы вручную преобразовать двоичный в десятичный без родной функции PHP,
или какой-нибудь более простой способ сделать это?
Не значимая разница.
И не трудно проверить. Вы должны быть в состоянии написать такой тест без каких-либо проблем.
<?php
$start_a = microtime(true);
$bin = "1000"; //8 in decimal
for ($n = 0; $n < 1000000; $n++) {
$bin_a = strrev($bin);
$bin_a = str_split($bin_a);
}
$end_a = microtime(true);
echo "Took ", $end_a - $start_a, " seconds \n";
$start_b = microtime(true);for ($n = 0; $n < 1000000; $n++) {
$bin_b = str_split($bin);
$bin_b = array_reverse($bin_b);
}$end_b = microtime(true);
echo "Took ", $end_b - $start_b, " seconds \n";
Вывод, за миллион повторений:
Заняло 0,26819205284119 секунд
Заняло 0,39758610725403 секунд
Если вы оптимизируете это, вы, скорее всего, делаете это неправильно. 🙂
Других решений пока нет …