간단프로그래밍2010. 3. 6. 13:18

숫자를 담는 정수형 변수 사이즈가 4096*4 바이트 이지만 10000! 채워진걸 봤을때

100000! 까지 가면  오버플로우 날것 같다... 이런 엄청난 숫자라니

원래는 INC, DEC, ADD, MUL, LSHFT, RSHFT 
이렇게 명령어? 들을 하나하나 다 만들었는데 팩토리얼을 건들다 보니

오로지 팩토리알만을 위한 것이 되버렸다. 흠

짜다보니 memcpy 속도가 엄청나게 빠르다는 사실을 알게 되었다.

곱셈함수에서 원래는 임시변수의 포인터를 세번째 파라미터로 받아서

그 임시변수에다가 결과값을 계산한후 memcpy로 복사하는 일을 했는데

4096*4 바이트 를 일일히 복사하느니 두개의 포인터변수만 스위칭해서

결과값은 양쪽에 왔다갔다 하게(설명이 이상하지만...) 결국 포인터 자체가 스위칭 되므로

포인터가 가리키는 값은 왔다갔다 해도 결국은 포인터 변수만 참조하면 결과값을 알아낼수 있기 

때문에 이런 꽁수 생각해내고 혼자서 자뻑하면서 결과를 살펴봤는데..

memcpy랑 속도차이가 하등 차이가 나질 않는다...


10000! 계산하는데 넷북으로 18초나 걸린다... 너무 느리다.
아예 구조를 다시 생각해봐야 겠다. 
Posted by 멍충한아싸

댓글을 달아 주세요