CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): soulman (그림자)
날 짜 (Date): 2003년 4월 24일 목요일 오전 10시 38분 53초
제 목(Title): 계산 코드 옵티마이즈..


에.. 아마츄어 프로그래머가 직업상 코딩을 합니당.
코드를 가능한 한 빠르게 만들어야 하는데...
3차원 공간 상에서 유체 문제를 푸는 .. 뭐 그런 종류의 일입니다.
C로 짜고 있습니다. (C++은 문법만 겨우 이해하는지라 선뜻 붙잡고 일하기가 아직...)

1. 함수 앞에 inline을 붙이면 뭐가 달라지나요? optimiza 하면 어차피
컴파일러가 알아서 다 inline으로 처리하는 거 아닌가요..
2. inline 함수 안에서 inline 함수를 또 부르면 알아서 다 줄줄이 집어
넣어주나요?

3. 함수를 여러개 만들면 함수 부를 때마다 stack에 어드레서 저장하고
쩜뿌하고.. 이래서 느려지는 거 아닌지..
그냥 줄창 한 함수 안에서 노가다로 짜는 게 좋은 건지...

(위  세 질문은 결국 같은 질문 같습니다.. 흠흠)

4. 테스트 해보면 malloc으로 2차원, 3차원 배열 잡는거보다, 
1차원으로 잡아서 indexing을 복잡하게 해주는게 더 빠르던데..
(그러니까 a[i][j][k] 보다 a[(i*NX+j)*NY+k] 이런 식의 구조..)
이런 식으로 모두 바꾸어 주려다 보니 점점 일이 커지는 군요.
indexing 함수를 벌써 두개 만들었고 앞으로 더 만들게 될 거 같은데...
이런 노가다를 컴파일러가 알아서 하게 해 줄 방법은 없는 건지..

5. a+1, a+2 보다 a+one,a+two 이런 식으로 짜는 게 더 빠른가요?
optimize하면 상수 더하는 것을 다 register나 stack에 가지고 있다가 더하는건지..

6. 유체의 연속 방정식이나 전기장 (poisson)방정식을 풀 때 나오는 matrix inversion
technic중 가장 빠르다고 알려져 있는 알고리듬은 무얼까요... 병렬화를 한다면
가장 빠른 알고리듬은????

7. 그 밖에 각종 speedup tip이 있는 좋은 자료가 없을까요???


[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.