PHP - foreach, array_map 기본 설명
① PHP : foreach -> 배열을 순회하며 정의한 프로세스를 실행하는 함수
② PHP : array_map -> 배열의 각 원소에 사용자가 정의한 함수를 적용하여 결과를 반환하는 함수
③ stackoverflow 등 여러 포럼에서 두 함수에 대한 벤치마크 테스트에 대한 많은 이슈가 있어서 테스트를 수행했습니다.
④ 수행 결과 PHP 버전, xdebug 활성유무, 클로저 호출 유무 등에 따라 상이한 결과가 나올 것으로 예상됩니다.
- 결론은 프로그램 로직에 맞는 적절한 함수를 사용하는 것이 적절하다고 생각합니다.
- 단, PHP7 버전에서는 코드 캐싱 및 최적화 기능으로 인해 더욱 빠른 수행 시간을 확인할 수 있었습니다.
PHP - foreach 성능 테스트
전체 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $arrayOfNumbers = array(); function get_time() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } for($i=1; $i<= 10000; ++$i) { $arrayOfNumbers[] = rand(1, 99999); } //Heap 선언 $maxHeap = new SplMaxHeap (); $start = get_time(); //foreach 테스트 foreach($arrayOfNumbers as $number) { $maxHeap->insert($number); } $end = get_time(); $time = $end - $start; echo 'foreach -> Avg Time: '.$time.'<br/><br/>'; ?> | cs |
실제 실행 화면
PHP - array_map 성능 테스트
전체 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $arrayOfNumbers = array(); function get_time() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } for($i=1; $i<= 10000; ++$i) { $arrayOfNumbers[] = rand(1, 99999); } //Heap 선언 $maxHeap = new SplMaxHeap (); $start = get_time(); //array_map 테스트 array_map(array($maxHeap, 'insert'), $arrayOfNumbers); $end = get_time(); $time = $end - $start; echo 'array_map -> Avg Time: '.$time; ?> | cs |
실제 실행 화면
PHP - 소스코드 다운로드
간단한 테스트이므로, PHP 버전, 하드웨어 사양 등에 대한 기술은 생략했습니다.
'언어 > PHP' 카테고리의 다른 글
PHP - JSON 데이터 사용 방법 및 Decode, Encode 설명 (0) | 2018.06.16 |
---|---|
PHP - 디버깅 함수 ( var_dump, print_r, var_export ) 설명 및 차이점 (0) | 2017.09.20 |
PHP - MySQLi 기본 사용 예제 & PHP 7.0 (1) | 2017.09.19 |