Странный вопрос о тесте в PHP - PullRequest
0 голосов
/ 15 апреля 2020

Я написал этот фрагмент, чтобы проверить время, необходимое для приведения строки к целому числу, и попробовал этот здесь для развлечения, но результат был настолько интересным.

<?php
$s = "123456789";
$t = microtime(true);
$data["HI"] = $s;
echo json_encode($data);
$time1 = (microtime(true) - $t);

$t = microtime(true);
$data2["HI"] = $s;
echo json_encode($data2);
$time2 = (microtime(true) - $t);

if($time1 > $time2) {
  echo "yes";
  echo $time1;
  echo $time2;
}

?>

Результат

yes
$time1 => 1.2874603271484E-5
$time2 => 3.0994415283203E-6

Странная вещь в том, почему для запуска одного и того же кода требуется больше времени?

1 Ответ

0 голосов
/ 16 апреля 2020

:) ок @ Махди Багери

 <?php
function dowork(){
$s = rand(100000,999999);
$t = microtime(true);
$data["HI"] = $s;
$j= json_encode($data);
$time1 = (microtime(true) - $t);
return $time1;
}
$avg = 0; $limit = 1000000; $start = date("h:i:sa");

  for($x=1 ;  $x<=$limit; $x++){
      $avg = ($avg + dowork())/$x;
      print "Iteration: ".$x. " Average = ". $avg ."\r\n";
}

print "Starting time is " . $start."\r\n";
print "Ending time is " . date("h:i:sa")."\r\n";
print "Average=".$avg;
?>

Мои результаты:

Время начала - 09:21:05 утра

Время окончания - 09:21:12 утра

Среднее = 9,5367527008247E-13

Это на ноутбуке Asus G531T с процессором i9-9750.

Для всех, кто хочет поиграть с этим, НЕ запускайте это на вашей веб-странице, только в CLI с подобными: $ php /path/to/test.php или вы можете создать sh браузер. Это, безусловно, быстрее в CLI, и отформатирован для него с переводами строки, а не с разрывами.

...