2012-05-19 4 views
1

문자열이 다른 문자열과 같은지 확인하기 위해 루프를 체크하고 있습니다. 쉬운 물건.in_array() 또는 대형 if-conditional을 더 빨리 사용할 수 있습니까?

그러나 내가 점검 할 문자열을 계속 추가하고 10 개의 다른 문자열을 갖고있는 것처럼 보입니다. 검사 할 문자열 배열을 만든 다음 in_array();를 수행하는 것이 현명한 방법입니다. 그러나 더 빨리 구문 분석하고 적은 시스템 리소스를 사용하는 것이 궁금합니다.

배열

$hideme = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php", 
    "style.css", "highlighter.css", "highlighter.js", "users"); 
if (!in_array($sub, $hideme)) { 

문자열! =

if ($sub != "." && $sub != ".." ...etc 

의 차이 문자열

는, 아마도 무시할 향후 참조를 위해 그냥 궁금합니다.

+1

걱정하지 마십시오. 작은 'n'배열의 경우 무시할 정도로 * 느립니다 (예 : 중요하지 않음, 걱정하지 마세요.). 큰'n'의 경우, 세트가 상당히 빠릅니다. 두 경우 모두, 위의'n '에 대해 2-3을 사용하면 배열/집합을 사용하면 더 명확한 코드가 생성됩니다. –

답변

1

빌드 인 함수는 컴파일 된 C 코드이므로 항상 빠릅니다. PHP 코드를 해석해야합니다.

CPU 사이클에 정말로 신경 쓰면 isset()이 가장 빠르기 때문에 가능한 값을 배열 키로 설정하는 것이 가장 빠릅니다. 물론 CPU 사용량과 메모리 사용량이 다르기 때문에 적은 리소스를 사용하는 리소스를 절약 할 수 있습니다.

@Kendall Frey가 말했듯이 이것은 미세 최적화이므로 코드가 판독 가능하도록 유지하고 프로파일 러가이 코드가 실행에 큰 영향을 미치지 않는 한 최적화에 대해서는 아무 것도하지 않습니다.

7

첫 번째 것을 사용하십시오. 속도에는 별다른 차이가 없지만 가독성이 실제 차이입니다.

CPU주기가 쌉니다. 프로그래머 시간은 그렇지 않습니다.

0

$ hideme 배열이 커지면 쉽게 확장 할 수있는 가장 쉬운 솔루션 (그리고 아마도 가장 빠른)은 isset()을 사용하는 것입니다.

$hideme = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php", 
"style.css", "highlighter.css", "highlighter.js", "users"); 

if (!isset($hideme[$sub])) { 
    // $sub is not in $hideme 
} 

작은 배열의 경우 in_array는 정상적으로 작동하지만 일반적으로 느리고 배열이 클 경우 너무 느려질 수 있습니다.

관련 문제