| [ 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이 있는 좋은 자료가 없을까요??? |