Показать сообщение отдельно
Старый 21.07.2011, 09:14   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Странное поведение microtime

С незапамятных времён использую следующий класс собственного написания:
class Benchmark
{
    public 
$startTime 0;
    public 
$endTime 0;

    private function 
getmt()
    {
        
//return array_sum(explode(" ", microtime()));
        
return microtime(TRUE);
    }

    public function 
start()
    {
        
$this->startTime $this->getmt();
    }

    public function 
stop()
    {
        
$this->endTime $this->getmt();
    }

    public function 
get($round 2)
    {
        if (
$this->startTime === 0)
        {
            return (
'Before using <b>' __FUNCTION__ '</b> , you should first start the timer!');
        }
        return 
number_format(($this->endTime $this->startTime), $round'.''');
    }



Испоьзование:

// require_once 'Benchmark.class.php';
$b = new Benchmark();
$b->start();
sleep(1); // sleep one second
$b->stop();
echo 
$b->get(); // ~ 1 sec 
Обрати внимание на приватный метод getmt:
private function getmt()
    {
        
//return array_sum(explode(" ", microtime()));
        
return microtime(TRUE);
    } 
В нём 2 способа получения этого самого микротайма:
1) старый через эксплод+эрэй_сум
2) новый через флаг в микротайме

Я заметил, что на некоторых серверах второй вариант выдаёт дико неточный результат, а первый работает всегда железно, но он через-жопный (ну согласитесь, там же массивы волохаются)
Попробуй у себя 2 варианта по очереди.

Апд: Запустил твой код у себя на сервере:
0.58410406112671
0.63313007354736
0.63548994064331
0.6358630657196
0.63662004470825
0.63760709762573
0.63862204551697
0.64616799354553
Фурычит
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (21.07.2011)