주)**********오해의 소지를 없애기 위해서**************
함수 테스트에 약간의 어패가 있습니다.
즉, 하나의 함수에 대해서 그렇게 많이(100만 이상) 사용하지 않기 때문에
정확한 테스트는 아닙니다.
다만,
똑같은 기능을 하는 함수는 여러개 존재할 수 있는데,
자신이 만든 함수중 최적의 함수를 선택하는 하나의 방법일 뿐입니다.
저 같이 함수를 개념없이 만들다 보니 여러개의 비슷한 함수가 나오더군요.
한번 실행시 거의 차이가 없지만 비교적 덩치가 큰 함수라면 한번 생각해 볼만한
문제인것 같습니다.
[테스트 환경]
-OS : 레드햇 6.2 (2.2.16)
-CPU : K6-3 400
-MEM : 128 M
-HDD : SCSI 2.1G *2
-APACHE : 1.3.12
-PHP : PHP/4.0.1pl2 + Zend Optimizer v0.99
[테스트 PHP 스크립트]
<?
$sum = 0;
for($n=1;$n<=10; $n++) { // 10번 테스트한다.
$start[$n] = microtime();
for($i=0; $i<=20000; $i++) { // 2만회 루프를 돌린다. 수정요함
// HDay_Others(0,1);
HDay(0,1); // 여기에 테스트할 함수를 입력한다. 예제는 HDay()함수
// File_HSize_Others($i,1);
// File_HSize($i,1);
}
$end[$n] = microtime();
$result[$n] = get_microtime($start[$n],$end[$n]);
echo "$result[$n]<br>";
$sum = $sum+$result[$n];
}
$avg = $sum/10;
echo "<p>합계 :$sum 초";
echo "<br>평균: $avg 초";
그럼 본격적으로 제가 만든 함수인
- Hday() VS Hday_Others()
- File_HSize() VS File_HSize_Othres()
를 속도 테스트 해 봅시다.
[ Hday() VS Hday_Others() VS Hday_s() ]
누구나 짐각적으로 보더라도 Hday()함수가 더 빠르다는것을 알 수 있을 것입니다.
만회 루프를 돌리는 회수를 10회한 결과
역시 Hday()함수가 약 1.5초 정도 빨랐습니다....
미세한 차이이지만 그래도 Hday()함수가 더 빠르다는것을 알 수 있습니다.
Hday(0,1)의 결과 :
0.54
0.54
0.55
0.54
0.55
0.54
0.55
0.55
0.54
0.55
합계 :5.45 초
평균: 0.545 초
Hday_Others(0,1)의 결과 :
1.96
1.95
1.95
1.95
1.96
1.95
1.95
1.95
1.94
1.94
합계 :19.5 초
평균: 1.95 초
Hday_s(0,1)의 결과 :
0.58
0.57
0.57
0.57
0.57
0.57
0.57
0.57
0.57
0.57
합계 :5.71 초
평균: 0.571 초
[ File_HSize() VS File_HSize_Othres() ]
이번에 파일크기를 휴먼싸이즈로 출력하는 함수를
비교해 보았습니다.
솔직히 작년에 만들어 놓은 함수인데 제가 개념없는 초보자이다보니
이제서야 그 결과를 알 수 있었네요...
어제 File_HSize_Othres() 함수는 "작은 것이 아릅답다"라는 논리(?)에 의해서
테스트겸 만들어 보았는데 엉뚱한 결과를 초래하더군요...
이글을 쓰게 된 배경도 바로 이점 때문입니다.
File_HSize($i,1)의 0에서 3만까지 10회 결과 :
1.82
1.83
1.83
1.82
1.83
1.83
1.83
1.80
1.84
1.81
합계 :18.24 초
평균: 1.824 초
File_HSize_Others($i,1)의 0에서 3만까지 10회 결과 :
2.01
2.02
2.03
2.02
2.01
2.01
2.01
2.01
2.02
2.03
합계 :20.17 초
평균: 2.017 초
거의 차이가 없지만 그래도 전자가 조금 더 빠르다는걸 짐작할 수 있습니다.
[끝으로]
지금까지 별 문제거리도 아닌것 갖고 주절주절 대 봤습니다.
다만,
함수를 공부하시는 분이나, 알고리듬에 자신이 없는 초보자님께
함수 선택에 있어서 조금이라도 도움이 되었으면 합니다..
......이상입니다.
--
..