2012-03-01 2 views
2

이것은 내 첫 번째 질문입니다.

내가 실행의 속도를 향상, PHP 스크립트에 대한 몇 가지 최적화를하고있는 중이 야 ...

사이 :

$datas = array(); 
$datas['file_import'] = $file_name_reporting; 

그리고 :

unset($datas); 
$datas['file_import'] = $file_name_reporting; 

사람이 어느 말해 줄 수 가 더 빠르다 ? $datas 지금 바로 null 때문에

+2

»조기 최적화는 모든 악의 근원입니다.«이 코드 줄은 코드의 병목입니다. – knittl

답변

2

두 번째 예는 경고를 발생 주셔서 감사 이전에 하늘의 배열로 선언해야한다, 그래서 당신은 배열로 처리된다.

첫 번째 예를 따르십시오. 빈 배열을 지정한 다음 일부 데이터를 입력하십시오.

+0

나쁜 소식!나는 $ datas 안에 많은 요소가 있음을 잊어 버렸다. 대답이 변경 되었습니까? – user1242440

+0

아니, 내 대답은 변하지 않습니다. 빈 배열을'$ datas'에 할당하고'unset'을 잊어 버리십시오 - 여기서는 쓸모가 없습니다. – hsz

1

array()는 배열을 생성하지만 unset()은 변수를 파괴합니다.

1

나는 첫 번째 방법은 그냥 덮어 생각하지만, 두 번째는 새로운 배열을, 존재를 확인하는 경고를 트리거링 및 생성, 삭제를 포함

1

그것은 어느 형태가 다른 것보다 "더 빨리"이라고 주장하는 말도 안돼. 두 버전 모두 너무 빨리 실행되므로 루프 내에서 수백만 번 실행하면 차이가 있음을 알 수 있습니다. 실제로 스크립트에서 그렇게합니까? 그렇지 않다면, 여기에서 "최적화"를 잊어 버려야합니다. (숙련 된 개발자가 알 수 있듯이 실제로는 모두 "눈으로"잊어 버리는 것이 좋습니다.)

그 위에

, 두 버전은 실제로 는 다른 일을을 그 unset는 sumbol 테이블에서 이름 $datas를 제거 (그리고 당신이에 값을 추가 할 때 다음 줄에 당신에게 통지를 줄 것이다에 정렬).

그냥 옳은 것을 사용하고 무거운 루프를보고 최적화 할 항목을 찾아보십시오.

1

두 경우 모두 새 배열이 생성됩니다. PHP에서 변수를 설정 해제하면 다음 행에서 배열 생성자를 호출하기 위해 값을 null로 설정합니다. 내가 knittl에 동의하지만, 나의 제안은 다음과 같습니다 어떤 당신을 값을 갖는 새 배열을 생성함으로써

$datas = array('file_import' => $file_name_reporting); 

, 당신 자동 변수 '해제'와 배열 생성자에 값을 전달하여, 당신이 당신의 배열을 채울 수 있습니다 네가 그곳에있을 때를 원해.

1

명백히 배열을 만들고 데이터의 일부를 추가하는 두 가지 작업 만 수행하면 분명히 첫 번째 코드가 더 빠르게 작동합니다. 두 번째 예제는 변수를 삭제 한 다음 다시 사용하려고 시도하기 때문에 경고가 표시됩니다.

또한 unset은 사용 된 메모리를 해제하지 않고 변수에 대한 포인터 만 릴리스합니다. gc가 실행될 때 메모리가 해제됩니다. 메모리를 해제하려면 대신 $datas = null;을 사용하십시오.