문제

가는 속도의 차이,말:

$newstring="$a,$b 갔을 보$c";

$newstring=$니다."및".$b."나가서"참조.$c

고 그렇게 생각하는 까닭은 무엇인가?

도움이 되었습니까?

해결책

에 따라 PHP 버전에서는 다음과 같이 쓰면 두 번째가 얼마나 빠르는지에 따라 다릅니다.$newstring = $a . ' and ' . $b . ' went out to see ' . $c;

PHP입니다 매우 일관성이 없습니다 성능과 관련하여 버전에서 버전으로 빌드하여 빌드하기 위해 빌드하기 위해 빌드하여 직접 테스트해야합니다. 말할 것은 $a, $b 그리고 $c, 아래에서 볼 수 있듯이.

당신이 사용할 때 ", PHP는 문자열을 구문 분석하여 그 안에 사용되는 가변/자리 표시자가 있는지 확인하지만 만 사용하는 경우 ' PHP는 추가 처리없이 간단한 문자열로 취급합니다. 그래서 일반적으로 ' 더 빠르야합니다. 적어도 이론적으로. 실제로 당신 ~ 해야 하다 테스트.


결과 (초) :

a, b, c are integers:
all inside "     : 1.2370789051056
split up using " : 1.2362520694733
split up using ' : 1.2344131469727

a, b, c are strings:
all inside "     : 0.67671513557434
split up using " : 0.7719099521637
split up using ' : 0.78600907325745  <--- this is always the slowest in the group. PHP, 'nough said

이 코드 사용 Zend Server CE PHP 5.3 :

<?php

echo 'a, b, c are integers:<br />';
$a = $b = $c = 123;

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br /><br />a, b, c are strings:<br />';

$a = $b = $c = '123';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br />';

?>

다른 팁

있을 것이 속도의 차이 때문에,그것은 두 개의 서로 다른 구문.당신은 무엇을 요청해야하는 경우에는 차이가 중요합니다.이 경우에는,아,나는 할 필요가 있다고 생각하지 않습을 걱정입니다.의 차이는 것이 너무 무시할 수 있습니다.

나는 것이 좋습니다 당신이 무엇 대부분의 의미를 당신이 시각적으로 표시합니다."$a and $b went out to see $c"혼동할 수 있는 때다.당신이 가고 싶어하는 경로,나는 곱슬 중괄호는 주위에 당신의 변수:"{$a} and {$b} went out to see {$c}".

나는 빠른 벤치 마크를했고 다른 사람들이 말했듯이 결과는 매우 일관성이 없었다. 이중 인용문 대신 단일 따옴표를 사용하여 성능 게인을 알지 못했습니다. 내 생각에 모든 것이 선호하는 것입니다.

코딩 스타일에 대해 한 가지 유형의 견적을 고수하고 싶을 수도 있고, 그렇다면 이중 인용문을 선택하십시오. 교체 기능은 생각보다 더 자주 사용됩니다.

벤치 마크 코드를 넣었습니다 Github에서.

이 수준에서 문자열 연결 속도에 대해 걱정하고 있다면 잘못된 언어를 사용하고 있습니다. 이 유스 케이스에 대한 C로 응용 프로그램을 컴파일하고 PHP 스크립트에서 호출하십시오. 진짜 병목 현상입니다.

예, 차이는 매우 무시할 수 있습니다.

$newstring = "$a and $b went out to see $c";

그리고

$newstring = $a . " and " . $b . " went out to see " . $c;

사용한 경우 :

$newstring = $a . ' and ' . $b . ' went out to see ' . $c;

그 차이는 약간 더 클 것입니다 (그러나 아마도 여전히 무시할 수 있음). 그 이유는 내가 올바르게 기억한다면 (이것에 대해 잘못되었을 수 있음) PHP가 변수 및 특수 문자에 대한 이중 인용 표시 내에서 내용을 스캔하고 구문 분석하기 때문입니다 (. t, n 등) 및 단일 따옴표 마크를 사용할 때 변수 나 특수 문자를 구문 분석하지 않으므로 속도가 약간 증가 할 수 있습니다.

테스트하고 차이를 비교하지 않는 이유는 무엇입니까? 숫자는 거짓말을하지 않으며, 하나가 다른 것보다 더 잘 수행된다는 것을 알게되면 그 이유를 물어봐야합니다.

차이가 없습니다. ;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top