2015년 12월 31일 목요일

새로운 기계의 영혼


책 추천입니다. http://www.yes24.com/24/goods/2750608

2015년 12월 28일 월요일

포프TV Top 5, 그리고 뒷이야기 (2015)


여태까지 200편의 포프 TV에서 가장 인기있던 비디오 5편과.. 그 뒷이야기.. 부연설명 등등....


  1. 프로그래머가 수학을 못하면: https://www.youtube.com/watch?v=yMQncICQFYs
  2. 게임프로그래머를 관두는 이유 https://www.youtube.com/watch?v=0fzg1kL0Y2U
  3. 넥슨과 섬노예 https://www.youtube.com/watch?v=Po7INQYQRaY
  4. 야근과 자기발전 https://www.youtube.com/watch?v=UlqNxG95CRE
  5. 좋은 프로그래밍 언어와 기본동작 https://www.youtube.com/watch?v=99XbTaCJfhU

2015년 11월 2일 월요일

2015년 10월 29일 목요일

팀챗, 힙챗, 슬랙


괜찮은 채팅 서비스... 이멜주소 주시면 포프TV 슬랙 챗방에 가입시켜 드립니다 ㅎㅎㅎㅎㅎ

2015년 10월 15일 목요일

2015년 10월 12일 월요일

2015년 10월 7일 수요일

벡터가 해쉬맵보다 (대부분) 빠른 이유

예전에 탑프로그래머가 하드웨어쯤은 이란 비디오에서 대부분의 경우 벡터가 해쉬맵보다 빠르다 라는 말을 한 적이 있다. 이유는 캐쉬때문이라고...



근데 최근들어 왜 그러냐? 그렇지 않다 라고 하는 답글들이 딸려서... 대충 계산해서 답을 했다. 물론 어떤 자료구조를 컨테이너에 넣느냐에 따라 다르지만 기본적으로 포인터를 넣고 프로그램을 32비트용으로 컴파일한다고 가정하면 대충 이렇다.

(이 아래는 내가 단 댓글에서 복붙)

컨테이너 안에서 하나의 자료를 찾는 것이라 가정하고 말하죠.. 당연히 들어있는 element수가 많아지면 해쉬가 더 빠릅니다. 그 숫자가 몇개냐의 차이지만... 캐쉬라인이 64바이트라 가정하고 벡터안에 포인터(레퍼런스, 즉 32비트 프로그램에서 4바이트)라고 가정하면 한번 메모리 액세스할떄 16개를 한번에 불러오죠..

Intel i7-965 (Nehalem) 벤치마크한 결과를 보면 랜덤 access라 가정할때 L1 캐쉬 접근하는게 4clk 메모리 접근하는게 62.5ns입니다 (http://www.sisoftware.net/?d=qa&f=ben_mem_latency). 터보모드가 아니라면 이건 대략 200clk이죠

약간 계산을 간략하게 해서 예를 보여드리면...

벡터를 사용해서 16번째에 있는 아이템을 찾으면 200clk + 16 * 4 clk = 264clk의 시간이 들지만 해쉬맵을 사용하면 [200clk + 200clk + 4 clk + 4clk + 해쉬함수실행시간] = 408clk + alpha 의 시간이 들죠. 즉 아이템 16개까지도 벡터가 빠르단겁니다. 그리고 알파에 따라 32개까지가 더 빠를수도 있구요. 32개가 넘으면 대부분의 경우에 맵이 더 빠를겁니다.

그럼 보통 프로그램에서 컨테이너를 어떻게 사용하는지가 관건이죠. global string registry라던가 global resource manager등에서는 당연히 맵을 사용하는게 맞습니다. 하지만 그 외에도 상당히 많은 부분에서 32개 미만의 element가 들어가는 컨테이너를 쓰죠. 그런 경우에는 벡터를 쓰는게 더 빠르다고 말한겁니다. 많은 코드베이스를 보면 컨테이너를 쓰는 상당히 많은 경우가 32개의 element가 넘어가지 않더라구요.

(여기까지 복붙)

중요한건 주로 쓰는 i5 따위의 CPU를 예로 들면 메모리를 액세스 하는 시간이 훨씬 느려진다. 따라서 32개까지 또는 48개까지도 벡터가 빠를수도 있다.

이걸 가지고 수만개까지도 벡터가 빠르다라고 잘못 받아들이시는 분들이 있는데... 건 아니다. 수만가지를 쓴다면 당연히 해쉬가 빠르다. 수만가지의 element를 자료구조에 넣는 경우보다 열 몇 개 넣는 경우가 더 일반적이라 대부분의 경우 벡터가 그냥 빠르다고 말한 것임

2015년 10월 5일 월요일

주 8시간 근무


1주에 하루 근무합니다. 물론 짤린건 아니고 자발적입니다 -_-;

2015년 9월 11일 금요일

부정적인 자세와 성공


당연히 긍정적인 자세가 성공에 더 도움이 됩니다만.. 부정적인 자세가 필요할 떄도 있죠

2015년 9월 7일 월요일

2015년 9월 4일 금요일

스페셜 리스트가 맞다


결국 대부분의 사람들은 스페셜리스트가 되야하는 거 같습니다.

2015년 9월 2일 수요일

2015년 8월 31일 월요일

2015년 8월 28일 금요일

2015년 8월 26일 수요일

[게임소개] Brain It On


게임 다운로드 링크: https://play.google.com/store/apps/details?id=com.orbital.brainiton

2015년 8월 24일 월요일

수많은 전문가


제목만 보면 비꼬는거 같지만 아닙니다. 좋은 이야깁니다 훈훈한...

2015년 8월 21일 금요일

개발 프로세스 헛소리좀 그만


개발 프로세스가 이렇다 저렇다 말이 많은데 사실 대부분은... 헛소리입니다...

2015년 8월 10일 월요일

수재는 천재를 이길수 있다




세상을 바라보는 시각, 자아발견, 자기발전, 다른 사람에게 이용당하지 않기 등등의 이야길 담은 놈...

2015년 5월 11일 월요일

2015년 5월 7일 목요일

2015년 3월 7일 토요일

2015년 1월 12일 월요일

2015년 1월 8일 목요일

2015년 1월 5일 월요일