PHP ===
보다 왜 ==
빠릅니까?
=== vs ==
있지만, 자바 스크립트, 여기 읽을 수 있습니다 : stackoverflow.com/questions/359494/...
PHP ===
보다 왜 ==
빠릅니까?
=== vs ==
있지만, 자바 스크립트, 여기 읽을 수 있습니다 : stackoverflow.com/questions/359494/...
답변:
항등 연산자 ==
는 데이터 유형이 일시적으로 다른 피연산자와 같은지 확인하기 위해 데이터 유형을 강제하거나 변환 하기 때문에 ===
(ID 연산자)는 변환을 수행 할 필요가 없으므로 작업이 줄어 더 빨라집니다.
두 인수가 같은 경우 첫째, === 확인합니다 유형을 - 어떤 비교가 실제로 수행되기 전에 숫자 1과 문자열 '1'유형 검사에 실패 있도록. 반면, ==는 먼저 유형을 확인하지 않고 두 인수를 동일한 유형으로 변환 한 다음 비교를 수행합니다.
따라서 ===는 실패 조건을 확인하는 데 더 빠릅니다.
==
유형 변환을 수행 해야하는지 확인하기 위해 유형을 먼저 확인 한다고 생각합니다 . 사실 ===
다음 단계에서 어떤 변환을 수행하지 않습니다 빨리 그것을 만드는 것입니다.
고려해야 할 두 가지가 있습니다.
피연산자 유형은 다른 경우 ==
와 ===
생산 다른 결과를 . 이 경우 작업자의 속도는 중요하지 않습니다. 중요한 것은 원하는 결과를 생성하는 것입니다.
피연산자 유형이 동일하면 둘 중 하나 ==
또는 ===
둘 다를 사용 하여 동일한 결과 를 생성 할 수 있습니다 . 이 경우 두 연산자의 속도는 거의 동일합니다. 두 연산자 중 하나에 의해 형식 변환이 수행되지 않기 때문입니다.
나는 속도를 비교했다.
$a == $b
vs $a === $b
$a
그리고 $b
임의의 정수 [1, 100]결과는 다음과 같습니다.
$a == $b $a === $b
--------- ---------
0.765770 0.762020
0.753041 0.825965
0.770631 0.783696
0.787824 0.781129
0.757506 0.796142
0.773537 0.796734
0.768171 0.767894
0.747850 0.777244
0.836462 0.826406
0.759361 0.773971
--------- ---------
0.772015 0.789120
속도가 거의 같다는 것을 알 수 있습니다.
나는 그것이 훨씬 빠르다는 것을 실제로 알지 못하지만, 대부분의 언어에서 ===는 직접 유형 비교이며, ==는 필요한 경우 / 일치를 얻기 위해 유형 강제를 시도합니다.
피연산자가 같은 유형이되도록 강제 할 필요가 없기 때문에===
그들을 비교하기 전에.
나는 속도의 차이가 매우 의심 스럽다. 정상적인 상황에서는 더 이해하기 쉬운 연산자를 사용해야합니다.
PHP (c 코드)에서 value는 다음과 같은 "클래스"입니다.
class value
{
$int_;
$float_;
$string_;
$array_;
$object_;
}
당신이 비교하는 경우 $a == $b
와 $a
인 int
유형을, 같은 무언가가있을 것입니다 :
if ($a->int_ == $b->int_ || $a->int_ == (int) $b->float_ || $a->int_ == (int) $b->string_ || ...)
그러나 string
'1'
ASCII 코드로 캐스팅되지는 않습니다 49
.1
.
당신이 비교하는 경우 $a === $b
와 $a
인 int
유형을, 같이가 someting있을 것입니다 :
if ($a->int_ == $b->int_)
테스트 결과가 정확하면 컴파일러 문제 여야합니다.
프로세서는 클럭 사이클에서 수행하도록 지시받은 모든 작업을 수행합니다.
할 일이 적 으면 더 빨리 할 것입니다
덧셈:
아 실제로는 컴파일러가 처리 할 머신 코드를 이미 생성 한 경우 어떤 유형의 데이터를 비교해야하는지에 대해 수십억 개의 항목을 이미 추가 한 경우 하나의 "사소한"IF를 제거하면 속도가 크게 변하지 않습니다. 조금도.
누군가가 여전히 이것을 읽는다면 나는 더 많은 토론에서 흥미 롭습니다.
필