Ben ben çek çeşitli tür yapmak zorunda olduğu için büyük XML dosyaları (birkaç megabayt) ile uğraşıyorum. Ancak bellek ve çok hızlı büyür zaman kullanımı ile sorun var. Ben bu gibi test ettik:
$xml = new SimpleXMLElement($string);
$sum_of_elements = (double)0.0;
foreach ( $xml->xpath('//Amt') as $amt ) {
$sum_of_elements += (double)$amt;
}
Microtime'da () ve memory_get_usage () fonksiyonları bu kodu çalıştırarak aşağıdaki sonuçları elde:
- 5Mb file (7480 Amt-elements):
- yürütme zamanı 0,69 s
- Bellek kullanımı 10.25MB gelen 29.75Mb büyür
Yani hala oldukça ok. Ama sonra biraz daha büyük bir dosya bellek ve zaman kullanımı ile çok büyüyeceğini:
- 6Mb file (8976 Amt-elements):
- yürütme zamanı 8,53 s
- Bellek kullanımı 10.25MB gelen 99.25Mb büyür
Sorun, sonuç kümesi döngü gibi görünüyor. Ben de yerine foreach döngüsü-ama hiçbir fark ile denedim. Bellek kullanımını olmadan döngü çok büyümek değil.
Sorun olabilir herhangi bir fikir?