728x90

프로그래밍을 최적화 하는데에는 크게 2개의 방법이 있다.


1. Memory Access를 줄여라. (Cache를 이용하여 해결 가능)

2. 분기(if)를 줄여라. (예측 분기를 이용하여 해결 가능)



Cache를 하는 기준은 다음과 같다.

1. 시간성. (가져온지 얼마 안된 데이터)

2. 공간성. (가져온 데이터의 근처에 있는 데이터)


for(x = 0; ; )

{

for(y = 0; ;)

{

// 다음과 같은 2중 for문일 때에는 공간성을 위해 가로로 돌게하는 것이 성능에 도움이 된다.

}

}


for()

{

// L1 레지스트리가 32k이고, 하이퍼 스레드의 경우 16k씩 2개가 돌게 된다.

// if 없이  16k이하의 크기만 돌게 작성해야 한다. Cache보다 데이터가 크다면 Cache가 아예 동작을 하지 않는다.

// if가 7개 이상 있으면 예측 분기가 불가능 하다.

}


출처 : 회사 세미나 중에서...


728x90

+ Recent posts