<div>의외였지만 곰곰히 생각해보면 당연한 몇가지.</div> <div><br></div> <div>A)</div>int x = 123; <div>int y = 456;</div> <div>---</div> <div>1) <span style="font-size:9pt;line-height:1.5;">for(int i = 0; i < max; i++){</span><span style="font-size:9pt;line-height:1.5;"> </span><span style="font-size:9pt;line-height:1.5;">int z = 0; }</span></div> <div>2) <span style="font-size:9pt;line-height:1.5;">for(int i = 0; i < max; i++){</span><span style="font-size:9pt;line-height:1.5;"> </span><span style="font-size:9pt;line-height:1.5;">int z = x|y; }</span></div> <div>3) for(int i = 0; i < max; i++){ int z = x+y;}</div> <div><br></div> <div>삽질 삭제.</div> <div><span style="font-size:9pt;line-height:1.5;">2)와 3)은 비트연산은 무쟈게 빠를거란 상식을 무너뜨리고 덧셈과 속도경쟁이 무의미할 정도로 차이가 없다. </span></div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;">B)</span></div> <div>1) j = 1234 + 1234;</div> <div>2) j = 2468;</div> <div>둘은 속도 차이가 없다. 컴파일러가 이정도는 알아서 해 주신다. 목적코드를 까보시라.</div> <div><br></div> <div>C)</div> <div>string[] wow = string[int.Max];</div> <div>for(int i = 0; i<int.Max; i++)</div> <div>{</div> <div> wow[i] = "가나다...[겁나긴문장]...라마바";</div> <div>}</div> <div>string을 기본형으로 제공하는 언어에서, 위의 문장은 루틴을 다 돌려도 메모리를 그닥 많이 먹지 않는다.</div> <div>개발자가 신경쓸 필요는 없지만 내부적으로, 문장의 내용이 같을 경우 그 문장들은 같은 주소를 참조하고 있다.</div> <div><br></div> <div>C)</div> <div>JAVA / C / C++ / .Net 가운데, 뭐가 빠른가?</div> <div>기본 연산속도는 대부분 의미없는 차이를 보이거나, 심지어 몇몇 연산은 자바나 닷넷이 더 빠르다! (주로 새로나온 하드웨어 연산자 관련된...)</div> <div>C계열 언어가 빠른 이유는 저급 연산이 빨라서가 아니라 유연성을 잘 활용해서이다. (유연성이라 쓴곳을 복잡성 또는 기교, magic code, 장난질이라 바꿔도 그럴싸 하다.)</div> <div><br></div> <div>D)</div> <div>당신이 가장 흔하게 사용하면서 가장 느린 연산자는 'new' 연산자이다. 형을 찾아서, 메모리를 할당해주고, 레퍼런스를 만들고, 초기화까지 시킨다. 생성자를 수행해주는건 보너스. C나 C++은 조금 간소하지만, 그럼에도 불구하고 이거한번 쓰면 비트연산 써가면서 지랄발광했던게 민망해진다.</div> <div><br></div> <div>하고싶은 말:</div> <div><span style="font-size:9pt;line-height:1.5;">기본연산속도의 차이는 코딩하면서 신경쓸 가치가 있는 부분이 아니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;">사람이 기본연산으로 인한 느려짐을 </span><span style="font-size:9pt;line-height:1.5;">조금이라도</span><span style="font-size:9pt;line-height:1.5;"> 느끼려면 억단위의 </span><span style="font-size:9pt;line-height:1.5;">연산이</span><span style="font-size:9pt;line-height:1.5;"> 일어나야 한다. </span><span style="font-size:9pt;line-height:1.5;">(수의 크기가 아니라, 횟수 말이다.)</span><span style="font-size:9pt;line-height:1.5;"> </span><span style="font-size:9pt;line-height:1.5;">(사실 이런류의 실험을 할 때 대부분의 부하는 순환문 자체에서 발생한다.)</span></div> <div><span style="font-size:9pt;line-height:1.5;">씨피유는 개발자를 위해 발전해 왔다.</span></div> <div><br></div> <div>내가 이때까지 수행속도를 위해서 했던 오만 잡질 중에 만족할만한 속도 증가를 가져왔던 것은 세가지 경우였다.</div> <div>1. 코어알고리즘의 변경.</div> <div>2. 구조변경</div> <div>3. 전혀 다른 라이브러리나 함수의 사용. (이경우, 내가 짠코드는 아니지만 역시 1,2와 같은 이유일 것이다.)</div> <div><span style="font-size:9pt;line-height:1.5;">* 비트연산질을 할 때는 메모리 절약이나 기능적인 용도로 사용했을 때정도가 가장 좋았다.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div>* 당거: 본 내용은 어떤 종류의 컴파일러에 대해 사실이 아닐 수 있음.</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.