2017-12-22 3 views
2

이 코드를 고려하십시오 $store는 크고 하나는 메모리 사용 (memory_get_peak_usage)을 최적화하고자하는 경우, 그들이 $store . $afterStore 이후 $store을 유지하는 데 필요한 메모리 배로 사용 여기 발견 할 것이다PHP : 메모리 최적화 연결?

$fullText = $beforeStore . $store . $afterStore; 

하면 해당 크기의 다른 값 (또는 큰)뿐만 아니라 $beforeStore . $store . $afterStore. 그래서 최적화하기 위해, 나는 memory_get_peak_usage의 용어와 최종 상태 (memory_get_usage)에 두 번 밖에 제공

$fullText = $beforeStore . $store; 
unset($store); 
$fullText = $fullText . $afterStore; 

초기와 동일한 사용 (나는 unset 여기 $beforeStore$afterStore을 보내고 생략).

1 + n 줄의 코드를 작성하지 않고이 최적화 된 방식으로 연결하는 스마트 방법이 있습니까? 여기서 n은 연결된 문자열의 수입니까? (또는 연결된 각 줄을 해제하려는 경우 2n)

+0

문자열을 연결하는 대신 값에 대한 참조 배열을 만들고이를 $ fullText 대신 사용할 수 있습니다. 실제로 모든 것을 담고있는 하나의 변수가 필요합니까? –

+1

및 BTW,'unset'은 변수를 메모리에서 제거하지 않습니다. https://stackoverflow.com/a/584982/2595450 –

+0

@ Al.G. 음,이 특별한 경우에 예,'$ fullText'가 파일에 저장됩니다. – YakovL

답변

3

연결 대신 문자열 보간을 사용하므로 부분 결과에 중간 문자열을 만들 필요가 없습니다.

$fullText = "{$beforeStore}{$store}{$afterStore}"; 
+0

고마워, 정확히 내가 무엇을 찾고 있었는지 :) – YakovL