"쉬프트연산을 자주 그리고 제대로 이용하는 게 효과적이구나"라고 느낌
분기가 많은 코드가 좋지 않다고 이야기 듣고 또 그렇게 코딩하려고 했는데....
쉬프트연산으로 분기를 팍팍 줄이는거 보고 소름!
근데 또 쉬프트 연산을 생각하다보니까 비트 연산도 생각하게 되는데
이게 손으로도 익숙하지 않고 머리로도 낯설으니까 잘 안된다잉
"쉬프트연산을 자주 그리고 제대로 이용하는 게 효과적이구나"라고 느낌
분기가 많은 코드가 좋지 않다고 이야기 듣고 또 그렇게 코딩하려고 했는데....
쉬프트연산으로 분기를 팍팍 줄이는거 보고 소름!
근데 또 쉬프트 연산을 생각하다보니까 비트 연산도 생각하게 되는데
이게 손으로도 익숙하지 않고 머리로도 낯설으니까 잘 안된다잉
critical한 데서나 무분기 코드로 그렇게 최적화하지 보통은 필요 없어. 데이터 양이 매우 많아져서 처리가 너무 느려질 때나 고민해 봐야 될 문제인 거임.
얌마 그런건 하드웨어가 제약이 많을 때 짜내기로 하는거지. 권장할건 못됨. 쉽게 말해서 기굔데 기교보다는 제대로된 사고를 키우는 코딩을 해야 탈땔감 가능
그렇쿤
비트연산자 3개면 if 한 번 쓰는게 나아
쉬프트 땜질 하기보다 보기좋고 깔끔하게 앨고리즘이나 잘짜면 훨빨라진다 생각하고 그거에 집중헤라
if 를 써야 할지 논리연산만 쓰면 될지 아는건 중요하다고 본다.
ㄴ 오호... 그런 걸린시간 비교는 어떻게하십니까
위 댓글은 4번째 댓글에대한 것
명령어 별로 클록이 얼마나 걸리나 알면 되지. 무분기 코드가 좋다고 하는 건 파이프라이닝 때문이니까 파이프라이닝에 대한 지식도 있어야 하고.
간단한 사칙 연산이 4번 정도 반복되면 변수 하나에 담아서 처리하는게 낫다 그 이하면 그냥 똑같은 연산 세 번 하는게 나음.
컴파일러, 플랫폼마다 조금씩 차이는 있어.
주로 자주 반복되는 이미지 필터링 연산에서 일부를 수정한 것과 수정 안한걸 비교하는 식으로 작은 특징이 알고리즘 전체에 어떻게 반영되는지를 보지.
명령어별 클럭을 알면 좋은데 그건 486 이후론 잘 안맞더라.
어느 조합이 stall 을 많이 내냐의 문제라.
음흠
무슨 코드 보고 그러는거냐?? 코드도 없이 리뷰 지리네 ㅎㅎ
주로 이미지 프로세싱 알고리즘들 내가 구현하다가 내는 통계들이야.
파이프라인이 있다면 당연히 그런거지. write back cycle 까지의 지연보단 매번 계산하는게 몇 타임 까진 더 빠르게 마련.
ㄴ 그런데요 "사칙 연산이 4번 정도 반복되면 변수 하나에 담는다" 라는게 잘 와닿지가 않는데 간단한 코드로 보여주실 수 있나요?
그게 슈퍼 파이프라인과 슈퍼 스칼라로 오면서 단계가 많아지니, CPU 성능이 좋아질수록 그 횟수는 늘어나게 마련.
int a = b * c; if (d >= e - a && d <= e + a && f >= g - a && f <= g + a) 이 경우는 a변수에 b * c를 넣는게 낫단 소리고
if (d >= e - b * c && d <= e + b * c && f == b * c) 이 경우엔 그냥 나열 하는게 낫단 소리.
아하
위의 경우는 b * c 가 네 번, 아래의 경우는 b * c 가 세 번. 이해됨?
옙옙
대체 프갤에서 무슨 코드를 봤기에 하드웨어 제약 드립까지 나오는거? 프갤에 그런 코드도 있었냐??
어설픈최적화하지마새요
http://autogram.tk/이
중고차 어플리케이션 어떤가요?