2017-10-09 4 views
0

목적을 달성 한 후 배열을 지우는 것이 유용합니까?사용 후 배열을 지우는 것이 성능에 유용합니까?

$mediaUgly = simplexml_load_file('media.xml'); 
$mediaNice = json_decode(json_encode($mediaUgly),true); 

XML 파일의 크기는 약 50kb입니다. 나는 얼마나 큰지 알지 못한다. $ mediaUgly이 메모리에 있지만 더 이상 필요하지 않다. $ mediaNice, 이후에 나는 더 많은 배열을 $ mediaNice에서 파생시킬 것이다..

나는 어떤 속도 문제가 발생하지 않습니다,하지만 난 아주 작은 무언가 할당하여이 예를 들어, 따라서 최대한 빨리 할 수있는 메모리를 해제하는 미덕인지 궁금 : 뭔가 메모리에의하면

$mediaUgly = 0; 
+0

'unset ($ mediaUgly)'이고 인터프리터는 앞으로 더 많은 메모리가 필요할 때 'mediaUgly'가 이전에 사용한 메모리를 재사용 할 시점을 결정할 것입니다. – axiac

+0

이것은 합리적인 추측 일뿐입니다. 제 질문과 같습니다. – Helen

+0

어느 정도는 [문서화되어 있습니다] (http://php.net/manual/en/features.gc.php). – axiac

답변

1

을 그것을 지워서 실제 성능이 향상되지 않습니다. 데이터 지우기가 완료되면 다른 개체를위한 공간을 만들기 위해 데이터를 지우는 것이 좋습니다. 스크립트의 나머지 부분에서 결코 다시 사용하지 않을 많은 양의 데이터를 계속 축적하면 스크립트 자체의 메모리 사용량이 증가합니다. 이는 웹 서비스의 여러 하위 작업자에 걸쳐 곱해질 때 중요 할 수 있습니다.

왜 XML 구조를 json_encode/json_decode가있는 배열로 변환하고 있습니까? 일반적으로 SimpleXML 객체를 통해 데이터를 처리하는 것보다는 배열을 사용하는 것보다 데이터를 더 잘 처리 할 수 ​​있습니다. 그리고 json 작업을 수행하면 성능이 저하됩니다.

SimpleXML 명령에 익숙해지면 기쁩니다.

+0

감사! 나는 SimpleXML의 전체 향수를 받아 들인다! 하나의 요소를 골라 내고 싶을 때 간단합니다. 위의 배열은 반복을위한 것입니다. – Helen

+0

SimpleXML로도 반복 할 수 있습니다. – jhilgeman