왜냐하면 둘 다 진입시 반복조건을 판단하기 때문.do-while 은 ( 아직 ) 다르다.https://godbolt.org/z/sVqY1E컴파일러는 아직 정교하지 않다.https://godbolt.org/z/UtTy0F
첨알았네 이건.. do while이 자주 안쓰여서 그런건가?
이거 count == 0 인 케이스랑 음수인 케이스랑 위아래가 똑같다는걸 증명해야하는데 컴파일러가 그정도 수준까지는 아니라서 힘듬
do while 이 반복블럭 밖에서 판단하는 구조니 해석 메카니즘이 다르다는것 뿐이야. 같은 기능일땐 같아야 정상이지만, 아직까지 그렇진 않아.
아 이거 rgb 말이 맞음. 내가 int 로했지.
그래도 -O3 로 하면 달라지는듯?
응 -O3 는 다름.
for / while 은 O3 에서도 동일한데 for / do-while 은 O3 에서 컴파일 결과가 다름
아마 SIMD 적용하는 과정에서 힘들어하는듯...
참고로 Clang 8 쓰면 상상도못한 최적화해줌
맞아. 짜보면 차이가 느껴지더라공. ( 난 O2 를 안쓰거든 )
오 그래? 뭔 등차수열의 합산쓰나? ㅋㅋ
옹 맞네 % 3 쓰고 -O3 하면 clang 8 에서도 다르게 나오긴 하군.
clang 은 O2 O3 차이가 없던가~
차이 있는데 더 최적화할게 없어서 그런듯
그런듯.
허 미.. 한수 배우고 갑니다...
즉, O2 에선 용량을 희생하지 않는 차원에서 최적화라 성능을 위한 최대 최적화라고 할 수 없으니 그나물에 그밥으로 보일 수 있는것.
clang / gcc 도 결과가 다르지만, 아무튼, do-while 은 다르다.