Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Comments on What are the pros and cons of using objects vs associative arrays for JSON results of a CURL request in PHP?
Parent
What are the pros and cons of using objects vs associative arrays for JSON results of a CURL request in PHP?
I have a PHP script that uses CURL to return a JSON result that looks
//Curl set up code
$result = curl_exec($ch);
//Error checking code
$json = json_decode($result, true);
//Code to process result.
Now with the json_decode
function, I could set it to return process the JSON into a PHP object or to an associative array.
What would the pros and cons of using an objects vs associative arrays for the output of the json_decode
function function?
Post
It's just depend on PHP version. Above PHP 7 PHP object is faster and slightly heavier than array. On PHP 5 and below array is faster and lighter.
My test code:
<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';
$t0 = microtime(true);
$arraysOf=array();
$inicio=memory_get_usage();
for ($i=0; $i<100000; $i++) {
$arraysOf[] = json_decode($jsonobj,true);
}
$fin=memory_get_usage();
$timeArray = microtime(true) - $t0;
$memArray = $fin-$inicio;
echo '<p>arrays: '.$timeArray."</p>";
echo '<p>memory: '.$memArray."</p>";
$t0 = microtime(true);
$arraysOf=array();
$inicio=memory_get_usage();
for ($i=0; $i<100000; $i++) {
$arraysOf[] = json_decode($jsonobj);
}
$fin=memory_get_usage();
$timeObject = microtime(true) - $t0;
$memObject = $fin-$inicio;
echo '<p>Object: '.$timeObject."</p>";
echo '<p>memory: '.$memObject."</p>";
$timeDiff = abs(round((1 - $timeArray / $timeObject) * 100));
$memDiff = abs(round((1 - $memObject / $memArray) * 100));
$speed = $timeArray>$timeObject?"Slower":"Faster";
$speed2 = $memObject>$memArray?"Lighter":"Heavier";
echo '<p>associative arrays is '.$timeDiff.'% '.$speed.' and '.$memDiff.'% '.$speed2.' than object</p>';
?>
I tested on php 5.4, 7.4 and 8. You can test and check the result on:
-
associative arrays is 25% Faster and 18% Lighter than object
-
associative arrays is 22% Slower and 10% Lighter than object
-
associative arrays is 14% Slower and 10% Lighter than object
0 comment threads