반응형
1.array_unique 메소드를 사용하여 무게를 제거한다.
배열 원소에 대한 무게를 빼는 데, 우리는 일반적으로 array_를 사용한다.unique 방법, 이 방법을 사용하면 배열의 요소를 가중시킬 수 있다
<?php
$arr = array(1,1,2,3,3,3,4,4,5,6,6,7,8,8,9,9,9);
$arr = array_unique($arr);
$arr = array_values($arr);
print_r($arr);
?>
출력:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
)
무게를 뺀 키 값이 순서대로 정렬되지 않고 array_values를 사용하여 키 값을 정렬할 수 있습니다.
2.array_unique 방법을 사용하여 효율을 높인다.
<?php
$arr = array();
//10만 개의 임의 요소 배열 만들기
for($i=0; $i<100000; $i++){
$arr[] = mt_rand(1,99);
}
// 기록 시작 시간
$starttime = getMicrotime();
//거중
$arr = array_unique($arr);
// 기록 종료 시간
$endtime = getMicrotime();
$arr = array_values($arr);
echo 'unique count:'.count($arr).'<br>';
echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
echo 'use memory:'.getUseMemory();
/**
* 메모리 사용량 가져오기
* @return float
*/
function getUseMemory(){
$use_memory = round(memory_get_usage(true)/1024,2).'kb';
return $use_memory;
}
/**
* microtime 가져오기
* @return float
*/
function getMicrotime(){
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
?>
유니크 카운트:99
런타임:653.39303016663ms
use memory:5120kB
array_unique 메서드 사용무게 빼기, 런타임 약 650ms, 메모리 약 5m
3.더 빠른 배열 탈중 방법
php는 키 값을 교환하는 방법이 있다. array_flip, 키 값이 서로 바뀌어 무게를 뺄 수 있습니다.중복되는 값이 같은 키가 됩니다.
다시 한번 키 값을 교환하여 키와 값을 맞바꾸다바꾸면 거중(重重)을 완성할 수 있다
<?php
$arr = array();
// 10만 개의 임의 요소 배열 만들기
for($i=0; $i<100000; $i++){
$arr[] = mt_rand(1,99);
}
// 기록 시작 시간
girok sijak sigan
$starttime = getMicrotime();
// 키 값 교환을 사용하여 무게를 빼기 사용하기
$arr = array_flip($arr);
$arr = array_flip($arr);
// 기록 종료 시간
$endtime = getMicrotime();
$arr = array_values($arr);
echo 'unique count:'.count($arr).'<br>';
echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
echo 'use memory:'.getUseMemory();
/**
* 메모리 사용량 가져오기
* @return float
*/
function getUseMemory(){
$use_memory = round(memory_get_usage(true)/1024,2).'kb';
return $use_memory;
}
/**
* microtime 가져오기
* @return float
*/
function getMicrotime(){
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
?>
유니크 카운트:99
런타임:12.840032577515ms
use 메모리:768kb
array_flip 메서드를 사용하여 가중치 제거가동시간 약 18ms, 메모리 용량 약 2m
따라서 array_flip 메서드를 사용합니다.array_unique 메서드를 사용한 런타임보다 98 감소메모리 점유율 4/5 감소
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 쾌속 정거장 건설의 6가지 단계를 자세히 설명하다 (0) | 2022.07.12 |
---|---|
PHP CLI 모드 설명 (0) | 2022.07.12 |
php 표준 입출력 (0) | 2022.07.12 |
PHP 엔트리-환경 구축 (0) | 2022.07.12 |
PHP SOCKET 프로그래밍 (0) | 2022.07.12 |