반응형
글 옮기는 과정에서 코드부분이 날아갔네요...
글 수정하면서 결론만 남깁니다~

코딩을 할 때 가끔 이런 코딩을 합니다.
if( isValid == true){ ... }
isValid가 Boolean 값이라면 "== true" 부분은 써줄 필요는 없지만 가독성을 위해서인데요...

갑자기 if(true)와 if(true == true) 중 어떤게 더 빠를까라는 의문으로 몇가지 좀 해봤는데요~

true 또는 객체를 비교연산하지 않고 그냥 쓰는 것이 가장 빠르게 나왔습니다.
오히려 true == true 연산이 객체를 그냥 써준것 보다 느리네요... 역시 비교연산을 한번 더 하기 때문인 것 같습니다.

그리고 비교연산 중에서는 같은 형끼리의 연산이 다른 형끼리의 연산보다 월등히 빠르게 나왔네요...
obj != null는 형변환이 필요없지만 obj == true는 형변환이 필요하죠...
Boolean(obj) == true는 강제 형변환 후 같은 형끼리 비교연산을 하기 때문에 빠른 것 같은데...
특이한 것은 Boolean(obj)입니다.
당연히 Boolean값이라 true를 써준것과 같지 않을까라고 생각했는데요... 그렇지가 않네요...
정확한 이유는 모르겠으나 Boolean은 원시타입이 아니라 Boolean이라는 객체이기 때문인 것 같습니다.
Boolean(obj) == true연산시에는 obj객체를 Boolean 타입으로 형변환 후 valueOf():Boolean 메서드를 사용해 true와 비교연산하는 것 같고,
Boolean(obj)만 써준 경우는 obj객체를 Boolean 타입으로 형변환 후 toString():String 메서드를 사용하기 때문에 다시 형변환이 필요해서 아닐까 추측해봅니다. ^^;;

결론적으로 다른 형끼리 비교연산을 하지 않는 다면 아무렇게나 써도 속도에 크게 지장을 주지 않는다는 거죠...
5십만번 연산을 해야 10밀리세컨드 정도 차이가 나네요... 하지만 다른 형끼리의 비교연산은 조심해야겠네요... 1초정도 차이가나니까요...

마지막으로 빠른 순서대로 정리해봤어요~ (왼쪽으로 갈수록 빠름니다.)
true <- obj <- true==true, Boolean(obj) == true <- obj != null <- obj == true <- Boolean(obj)



반응형

+ Recent posts