결국 함수호출 오버헤드 이야긴데
'서툰 푸줏간 주인처럼 아무 곳이나 자르지 말고, 관절 같은 자연적 형태를 따라 잘라 나누라' 는 소크라테스의 말처럼
바보같이 자르지만 않으면 함수호출 오버헤드는 크지 않고,
그나마도 아까우면 inline 함수가 있고, 매크로가 있고 템플릿이 있잖아.
아니면 naked 펑션으로 프롤로그랑 에필로그 제거하고 인라인 어셈블리 달리든지. ( 사실 이건 권장하지 않음 )
그 이상 성능을 끌어내야되는 경우들은 SIMD 류 stream 명령어나
intrinsic( bsf, bsr, builtin_popcount 같은 builtin 시리즈 ) 들로 해결하는거지.
그도 아니면 bit twiddle 이나 부동소수기반 hack 이나 고정소수점 트릭, loop unrolling, memoization 들 쓰는거고.
누가 게임 프로그래밍에서 성능어쩌구 이야기 하던데 응 상관없어.
ㅇㅅㅇ b ㅡ wounded healer
쌉고수
비트연산트릭은 가장 간단히 접근할 수 있는 내부 병렬처리 기법이고, 논리연산결과의 비트화로 legacy 명령 블럭의 파이프라인 성능을 극대화할 수도 있다. 캐시라인이나 prefetch 다룰줄 알면 더더욱 성능을 향상시킬 요소는 많은것이고, data oriented design 으로 클러스터링 효율을 높일수도 있지
무분기 트릭들로 super pipeline 에서의 branch hazard 를 제거해주는 것도 성능최적화 방법중 하나지.
성능때문에 단일책임원칙을 지킬 수 없어요 하는건 그냥 코딩 많이 안해본 애들의 말같잖은 변명이다.