>> Read No. 615 article  
[PHP]함수 속도 테스트..& 날짜함수(1/2)

등록 2000-07-09 05:48:00     조회 4
이름 산이    

		안녕하세요?
 다음의 내용은 저 같이 개념없는 초보자를 위한
내용입니다.
따라서 자신이 전문가라고 생각하시면 고생스럽게 읽을 필요는 없습니다.
참고만 하시길 바랍니다.
  주)**********오해의 소지를 없애기 위해서**************
함수 테스트에 약간의 어패가 있습니다.
즉, 하나의 함수에 대해서 그렇게 많이(100만 이상) 사용하지 않기 때문에
정확한 테스트는 아닙니다.
다만,
똑같은 기능을 하는 함수는 여러개 존재할 수 있는데,
자신이 만든 함수중 최적의 함수를 선택하는 하나의 방법일 뿐입니다.
 저 같이 함수를 개념없이 만들다 보니 여러개의 비슷한 함수가 나오더군요.
한번 실행시 거의 차이가 없지만 비교적 덩치가 큰 함수라면 한번 생각해 볼만한
문제인것 같습니다.
  [함수 테스트 목적 및 방법]
아래의 테스트는 아주 같단한 함수를 만들어 for()문을 100만회 이상 돌려 가장
빠른 함수를 선택하는 방법입니다.
  [테스트에 전에]
일반적으로 PHP에서는 최대 스크립트 실행 시간을 30초로 설정되어 있습니다.
많은 회수의 for()문을 돌리면 30초가 넘어가는 경우가 많습니다.
이 때는 php.ini(php3.ini)에서
 max_execution_time = 30
 부분을 적당하게 수정하고 재가동했는데도 안되더군요...
다시 PHP를 컴파일해야 할듯.........
  [테스트에 사용된 함수]
 // 출처 : JSBOARD ......... 속도 테스트를 위해서
function get_microtime($old, $new) {
  // 주어진 문자열을 나눔 (sec, msec으로 나누어짐)
  $old = explode(" ", $old);
  $new = explode(" ", $new);
   $time[msec] = $new[0] - $old[0];
  $time[sec]  = $new[1] - $old[1];
   if($time[msec] < 0) {
    $time[msec] = 1.0 + $time[msec];
    $time[sec]--;
  }
   $time = sprintf("%.2f", $time[sec] + $time[msec]);
   return $time;
}
  // 각 요일을 한글로 출력하는 함수
// $sub 변수가 있을 경우 자세하게(?) 출력
// $date 변수는 유닉스 timestamp 값이다.
function HDay_Others($date="0", $sub="0") {
 if(!$date) { $date = time(); } // 특정 날짜가 없다면 현재시간을 $date로 정한다.
$date = date("w", $date); // 각 요일
  if($sub) {
  $date = eregi_replace("0", "일요일", $date);
  $date = eregi_replace("1", "월요일", $date);
  $date = eregi_replace("2", "화요일", $date);
  $date = eregi_replace("3", "수요일", $date);
  $date = eregi_replace("4", "목요일", $date);
  $date = eregi_replace("5", "금요일", $date);
  $date = eregi_replace("6", "토요일", $date);
  } else {
  $date = eregi_replace("0", "일", $date);
  $date = eregi_replace("1", "월", $date);
  $date = eregi_replace("2", "화", $date);
  $date = eregi_replace("3", "수", $date);
  $date = eregi_replace("4", "목", $date);
  $date = eregi_replace("5", "금", $date);
  $date = eregi_replace("6", "토", $date);
  }
return $date;
}
 // 각 요일을 한글로 출력하는 함수
// $sub 변수가 있을 경우 자세하게(?) 출력
// $date 변수는 유닉스 timestamp 값이다.
function HDay($date="0", $sub="0") {
 if(!$date) { $date = time(); } // 특정 날짜가 없다면 현재시간을 $date로 정한다.
$date = date("w", $date); // 각 요일
     if($date == 0 ) { $date = "일요일"; }
    else if($date == 1 ) { $date = "월요일"; }
    else if($date == 2 ) { $date = "화요일"; }
    else if($date == 3 ) { $date = "수요일"; }
    else if($date == 4 ) { $date = "목요일"; }
    else if($date == 5 ) { $date = "금요일"; }
    else { $date = "토"; }
     if(!$sub) { $date = eregi_replace("요일", "", $date); }
 return $date;
}
 // switch() 문 사용시
function HDay_s($date="0", $sub="0") {
 if(!$date) { $date = time(); }
$date = date("w", $date); // 각 요일
  switch($date) {
   case "0":
     $date  = "일요일";  break;
   case "1":
     $date  = "월요일";  break;
   case "2":
     $date  = "화요일"; break;
   case "3":
     $date  = "수요일"; break;
   case "4":
     $date  = "목요일"; break;
   case "5":
     $date  = "금요일"; break;
   case "6":
     $date  = "토요일"; break;
 }
     if(!$sub) { $date = eregi_replace("요일", "", $date); }
 return $date;
}
  // 파일 크기 출력 함수
// $bfsize 변수는 bytes 단위의 크기임
// JSBOARD에 있는 함수입니다.
function File_HSize($bfsize, $sub = "0") {
    $bfsize_Bytes = number_format($bfsize);  // 3자리를 기준으로 컴마를 사용한다.
    if($bfsize >= 1024 && $bfsize < 1048576) { // KBytes 범위
      $bfsize_KB = round($bfsize/1024);
      $bfsize_KB = number_format($bfsize_KB);
      if($sub) {
	 $bfsize = "$bfsize_KB KB($bfsize_Bytes Bytes)";
      } else {
	 $bfsize = "$bfsize_KB KB";
      }
    } else if($bfsize >= 1048576) { // MB 범위
      $bfsize_MB = round($bfsize/1048576);
      $bfsize_MB = number_format($bfsize_MB);
      if($sub) {
	 $bfsize = "$bfsize_MB MB($bfsize_Bytes Bytes)";
      } else {
	 $bfsize = "$bfsize_MB MB";
      }
    } else {
      $bfsize = "$bfsize_Bytes Bytes";
    }
 return $bfsize;
}
 // 바로 앞의 File_HSize()함수와 비교하기 위해서
// 몇줄을 없애고 간략하게 정리(?)해 보았습니다.
function File_HSize_Others($bfsize, $sub = "0") {
    $bfsize_Bytes = number_format($bfsize);.
    if($bfsize >= 1024 && $bfsize < 1048576) { // KBytes 범위
      $bfsize_KB = round($bfsize/1024);
      $bfsize = number_format($bfsize_KB);
      $bfsize = "$bfsize KB";
    } else if($bfsize >= 1048576) { // MB 범위
      $bfsize_MB = round($bfsize/1048576);
      $bfsize = number_format($bfsize_MB);
      $bfsize = "$bfsize MB";
    } else {
      $bfsize = "$bfsize_Bytes Bytes";
    }
    // 비트 연산이 아닌 논리연산으로 권장
    if($sub && ($bfsize_KB || $bfsize_MB)) {
      $bfsize = "$bfsize($bfsize_Bytes Bytes)";
    }
return $bfsize;
}
 // 테스트하지 않았지만 그냥 올려봅니다...
// 현재 제 게시판에 사용하는 함수임...........꽤 새벽에 오시는 분이 많더군요..
//
// 하루 24시간을 새벽/오전/오후/저녁의 시간대를 출력하는 함수
// $sub 변수가 없다면 단순하게 오전/오후로 출력함.
function HDay_AP($date="0", $sub="0") {
 if(!$date) { $date = time(); }
$date = date("G", $date);
//$date = $date/6; // 하루를 6시간씩 4개로 나눈다..(새벽/오전/오후/저녁)
 
if($sub) {
  if($date >= 0 && $date < 6) { $date = "새벽"; }
  else if($date >= 6 && $date < 12) { $date = "오전"; }
  else if($date >= 12 && $date < 18) { $date = "오후"; }
  else { $date = "저녁"; }
} else {
  if($date >= 0 && $date < 12) { $date = "오전"; }
  else { $date = "오후"; }
}
return $date;
}
 // 이 함수는 재미삼아 만들어본 함수입니다.
// 예전에 "허준" 드라마에서 "묘시에 탕약을 드실것이옵니다."
// 라는 대사에 대해서 "묘시"가 몇시인지 짐작이 가지 않아서...
//
// 하루 24시간을 12 시간대로 출력하는 함수
function HDay_12Z($date="0") {
 if(!$date) { $date = time(); }
$date = date("G", $date);
//$date = $date/2; // 하루를 2시간씩 12개로 나눈다..(자시~해시까지)
 
  if($date >= 1 && $date < 3) { $date = "寅時(인시)"; }
  else if($date >= 3 && $date < 5 ) { $date = "卯時(묘시)"; }
  else if($date >= 5 && $date < 7) { $date = "辰時(진시)"; }
  else if($date >= 7 && $date < 7) { $date = "巳時(사시)"; }
  else if($date >= 9 && $date < 11) { $date = "午時(오시)"; }
  else if($date >= 11 && $date < 13) { $date = "未時(미시)"; }
  else if($date >= 13 && $date < 15) { $date = "申時(신시)"; }
  else if($date >= 15 && $date < 17) { $date = "酉時(유시)"; }
  else if($date >= 17 && $date < 19) { $date = "戌時(술시)"; }
  else if($date >= 19 && $date < 21) { $date = "亥時(해시)"; }
  else if($date >= 21 && $date < 23) { $date = "子時(자시)"; }
  else { $date = "丑時(축시)"; }
 return $date;
}
 // 현재 또는 특정한 날짜를 한글로 출력하는 함수
// $sub가 있을 경우 시:분:초로 출력한다.
function HDate_Time($date="0",$sub="0") {
 if(!$date) { $date = time(); }
if($sub) {
  $date   = date("Y년 m월 d일 H:i:s", $date); // 상세한 시간 시/분/초까지
} else {
  $date   = date("Y년 m월 d일", $date);
}
return $date;
}
  *참고로
time()함수와 위의  HDay_AP()를 이용해서 세계각지의 현재 시각을
직감적으로 표시할 수 있습니다...........
(*채팅할때 제가 사용하는 함수이기도 합니다...)
 ...계속
 --
..
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.77 초 ] 작업시간: [ 0.05 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791034231
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.