Érdekes mérés - json_decode() vs. parse_ini_file()
Éppen ebben a pillanatban végeztem el egy érdekes mérési kísérletet, amelyben szembeállítottam a parse_ini_file() és a json_decode() függvények hatékonyságát. A mérési eredmény annyira meglepett, hogy úgy döntöttem megosztom a szélesebb közönséggel is...
Ebben a tesztben összehasonlítottam a parse_ini_file() és a json_decode() (használva a file_get_contents() függvényt is) függvényeket, hogy meglássam: egy nagyon egyszerű konfigurációs állományt melyik módszerrel gyorsabb feldolgozni. Természetesen a parse_ini_file() fölényes győzelmére számítottam, de végül igen csak meglepődtem.
Előkészületek
A teszt elvégzéséhez két konfigurációs fájlt hoztam létre.
parseini-test.ini:
[global]
a = 1
b = 2
c = "Lorem Ipsum"
d = "Dolor Sit Amet"
e = 3.14
jsondecode-test.json:
{
"a": 1,
"b": 2,
"c": "Lorem Ipsum",
"d": "Dolor Sit Amet",
"e": 3.14
}
A mérőkódok
parseini.php:
<?php
$s = microtime(TRUE);
for ($i=0; $i<100000; $i++)
{
$a = parse_ini_file('./parseini-test.ini');
unset($a);
}
$e = microtime(TRUE);
echo $e-$s;
?>
jsondecode.php:
<?php
$s = microtime(TRUE);
for ($i=0; $i<100000; $i++)
{
$a = json_decode(file_get_contents('./jsondecode-test.json'), TRUE);
unset($a);
}
$e = microtime(TRUE);
echo $e-$s;
?>
Az eredmény
A fenti kódokat háromszor futtattam egymás után (tapasztalataim szerint a harmadik eredmény közelebb áll az átlagoshoz):
- parseini.php: 3.24759721756
- jsondecode.php: 3.289290905
A tanulság
Ezek után úgy döntöttem, hogy a json_decode() függvényt fogom használni a konfigurációs állományok feldolgozására, mivel a json_decode() és a parse_ini_file() sebessége között alig van hajszálnyi különbség, míg azt sem árt megemlíteni, hogy a JSON formátum segítségével jóval típusosabb és struktúráltabb konfigurációs állományok hozhatóak létre, nem is beszélve a formátum szélesebb felhasználhatóságából adódó előnyökről.
Megjegyzés: A json_decode() érzékeny az asszociatív kulcsnevek idézőjeleire, így azokat nem szabad elfelejteni minden esetben kitenni. A tesztet PHP 5.2-es verzión végeztem.
- prometheus blogja
- A hozzászóláshoz regisztráció és belépés szükséges
- Küldés ismerősnek
- PDF változat

