두 번째 과제 3
2차 과제에서 이진수는 유인국에게, 프로파일 리포트를 하라고 조언해줬다.
그리고 매그넘 프로젝트는 모바일 게임이었기 때문에 가능하다면, PC 환경 말고 스마트폰 디바이스에서 성능 측정을 해보라고 했다. 하지만 유인국은 스마트폰에서 성능 측정하는 것을 주저했다.
그 이유는 우선, 디바이스에서 성능 측정을 하려면 자신의 PC에서 빌드라는 과정을 거쳐 스마트폰 설치 파일을 만들어야 한다. 매그넘 프로젝트는 대형 프로젝트다 보니 빌드 과정이 매우 복잡했다.
상상하는 것에 대한 두려움이 없는 이진수와 유인국은 달랐다. 소심한 유인국은 감히 자신이 최고가 되려는 상상조차 하지 못했다. 그런 이유로 그는 짧은 시간 동안 욕심부리다 망하느니 안전한 방법을 선택했다. 스마트폰에서의 최적화는 포기하는 것으로.
다음 날. 이진수는 다시 유인국에게 말을 걸었다.
“인국 님 잘 돼 가세요?”
“네. 진수 님이 알려준 데로 프로파일 전후 비교하고 있어요.”
“코드 레벨의 마이크로 최적화해도 성능 향상이 별로 없죠?”
“네··· 그렇네요··· 분명 책에서 봤을 때는 몇 배는 빨라져야 하는데...”
"게임은 엄청 복잡해요. 한 부분만 좋아진다고 해서, 그게 전체적인 성능 향상으로 이어지지는 않아요. 자동차가 타이어를 두 배 비싼 걸 장착한다고 해서, 자동차 값이 두 배로 올라가지는 않잖아요."
유인국은 고개를 끄덕이며 공감했다.
"음... 그렇긴하네요... 그럼 어쩌죠?"
“전체 자동차 값을 올릴 만한, 검증된 방법들을 써야죠.
"그런 게 있어요?"
"네. 오브젝트 풀링해보세요.”
“오브젝트를 재활용하는 기법요?”
“네. 콜라병을 매번 새로 만드는 것보다 한번 만들어 두고 깨끗이 씻어서 재활용하면 자원 낭비 측면에서 훨씬 낫잖아요.”
“오브젝트 풀링이라면 이미 다 적용되어 있을걸요?”
“아뇨. 중요한... 한 곳을 빼먹었더라고요.”
오브젝트 풀링은 상대적으로 적용도 쉽고, 효과가 보장된 최적화 방법이다. 그래서 대부분의 게임은 이미 오브젝트 풀링을 도입한다. 매그넘 프로젝트도 마찬가지였다. 그런데 중요한 한 곳을 적용하지 않았다고? 만약 그게 사실이라면, 손쉽게 성과를 낼 수 있는 좋은 기회였다.
유인국이 말했다.
“어디요???”
이진수는 자신의 모니터를 가리키며 말했다.
“여기 보세요. 전투 중에 데미지 계산하는 구조체 있죠? 한번 타격이 일어날 때마다 데미지 구조체가 꽤 많이 발생해요. 이 데미지 구조체를 풀링해서 재활용하면, 최적화 효과가 있을 거예요.”
유인국은 감탄했다.
“와··· 왜 이걸 여태까지 아무도 못 봤죠···? 당연히 적용돼 있을 거라 생각했는데..."
"확신. 그리고 검증. 그 두 개의 오류죠. 자기가 잘하고 있다는 확신을 갖고, 검증하지 않으니까 이런 구멍들이 자꾸... 흠... 아무튼 그렇습니다."
"그나저나 진수 님 저한테 이런 걸 가르쳐주셔도 돼요? 전에도 말씀드렸다시피 저희는 경쟁자···”
“네. 괜찮아요. 어차피 저는 ‘진짜’ 프로파일러를 만들기에도 시간이 부족해요. 그리고 제가 가르쳐 주지 않았더라도 인국 님이라면 스스로 찾으셨을 거예요.”
“억··· 고마워요. 진수 님. 제가 정규직 합격하면 꼭 술 한번 살게요.”
“네. 저는 인삼주로요.”
“엥 인삼주? 진수 님은 농담도 참 재미 없게하시네요. 크크크."
"농담 아닌데요... 전 진짜 인삼주 좋아해요."
실제로 이진수는, 건설업에서 일할 때, 복날이면 함께 일하는 아저씨들과 삼계탕을 먹으며 인삼주를 즐기곤 했다.
"아···. 네...
동기 6인은 각자의 전략대로 바쁘게 2주를 보냈다. 그리고 마침내 금요일이 찾아왔다.
황정호 파트장이 동기 6인을 모두 회의실로 불렀다.
"하하하 안녕하세요? 오늘은 불금이네요! 불타는 금요일!"
황정호의 밝은 인사에 미소 지은 사람은 최인호뿐이었다.
“자자~ 발표 자료는 다들 제 메일로 보내 놓으셨죠?”
“넵”
황정호 파트장은 무언가 재미있는 일이라도 있는 것처럼, 능글능글 웃으며 동기들을 한 번씩 쓱 쳐다봤다.
“이번 2차 과제 발표에는 특별 게스트가 오실 예정이니까 잠시만 기다려주세요.”
그리고 정확히 2시 0분이 되자 회의실 문이 열렸다. 그리고 문틈 사이로 비집고 들어온 것은 강신구 팀장이었다.
“안녕하세요. 테크니컬팀 강신구라고 합니다.”
강신구 팀장이 등장하자 동기들은 더욱 얼음이 된 듯했다.
이구성이 김대주에게 귓속말을 했다.
"와씨... 수습 평가 최적화 과제에 테크니컬 팀장이 들어 온다고? 우리 다 죽이려는 거 아니에요?"
황정호 파트장이 말했다.
“자~ 일단 인사는 나중에 다시 하시고, 먼저 발표하고 싶은 사람 있나요?”
이진수와 최인호를 제외한 동기들은 모두 먼저 발표하려고 손을 들었다. 이번 주제의 강력한 우승 후보인 최인호보다 먼저 발표하려는 전략이었다. 최인호도 동기들보다 더 많이 준비한 것을 극적으로 강조하려면, 우선 동기들이 먼저 발표해 주길 바랐다. 상대적 우위를 가질 수 있도록.
최인호와 황정호 파트장의 예상대로 김대주는 코드 레벨 최적화의 하나로 느린 코드를 찾고, 그 코드를 최적화한 뒤 왜 이렇게 바꿨는지에 대한 설명이 주였다.
김대주의 발표는 짧게 끝났고, 그 뒤는 이구성의 차례였다.
이구성은 오타쿠적 기질이 충만했다. 그래서 코드 레벨 단계에서 이 코드가 왜 느린지에 대한 설명 자체는 김대주보다 깊었지만, 큰 틀에서 봤을 때 거기서 거기였다.
그다음 발표자는 이재웅이었다. 그는 무섭게 생긴 외모로 평소 무게감 있는 존재였지만, 강신구 팀장 앞에서 최적화 발표를 하는 그의 모습은 한 없이 작게 보였다.
이재웅이 조금 위축된 목소리로 말했다.
“여기 변수를 property로 만든 코드가 있습니다. 이 코드는 꼭 property 일 필요가 없기 때문에 일반 변수로 변경했습니다. property는 함수이고 변수는 그냥 변수이기 때문에 일반 변수가 더 빠릅니다.”
황정호 파트장이 말했다.
“property보다 일반 변수가 더 빠르다는 것은 오케이. 그럼, property보다 일반 변수가 얼마나 더 빠를까요?”
이재웅은 당황했다.
“아··· 그건··· 잘 모르겠습니다.”
황정호 파트장은 자신의 재치 있는 질문에 스스로 감탄하며, 강신구 팀장의 눈치를 슬쩍 보고 말했다.
“오케이. 알겠습니다. 그럼, 다음은 인국 님인가요?”
유인국은 소심하게 말문을 열었다.
“저도··· 앞 세분과 비슷한 작업을 했는데요. 거기다 추가로 최적화 작업 전후 비교 프로파일을 해봤습니다.”
유인국도 프로파일을 했다고 말하자, 황정호 파트장과 최인호가 서로를 쳐다봤다. 다른 사람들은 이론만 발표하고, 최인호는 최적화 작업 전후 성능 비교까지 해서 자신만의 특별함을 어필하려던 계획에 차질이 생긴 것이다. 하지만 그들에게는 다행히도 유인국의 발표 기술은 그다지 좋지 못했다.
황정호와 최인호의 주시 아래 유인국은 회의실 화면에 자신이 만든 PPT를 띄웠다. 소심한 유인국은 발표라는 행위와 잘 맞는 타입은 아니었다.
“여기... 그러니까... 여기를 보시면 아까 이재웅 님이 말씀하신 property는 일반 변수로 바꿀 경우 성능이 두세 배 정도 좋아지는 것을 볼 수 있습니다... 여기... 그런데 애초에 property도 성능 소모가 굉장히 적기 때문에 게임 전체적으로는 큰 영향이 없다고 생각하실 수도 있습니다···”
유인국은 PPT를 다음 장으로 넘겼다.
“제가 동영상을 찍어 봤습니다.”
유인국은 PPT에 저장된 동영상을 재생했다. 광전사 캐릭터와 캐릭터보다 몸집이 작은 초반용 고블린 몬스터 5마리가 서 있다. 광전사 캐릭터가 빠른 속도로 연타하는 연속 베기 스킬을 사용했다. 그러자 몬스터 5마리는 아주 짧은 시간 동안 수 십회씩 타격을 입었다. 그리고 타격이 일어날 때마다 게임은 순간적으로 화면이 끊기며 랙이 걸렸다.
“여기 보시면요··· 캐릭터와 몬스터들이 한창 전투를 벌이고 있을 때, 전투 로직의 모든 property가 호출되는 횟수가 한 프레임에 수천 번입니다. 그러니까··· property 가 1번 불리는 것은 그다지 문제가 안 되지만, 이것이 순간적으로 수천 번씩 불리니까··· property를 일반 변수로 변경하면, 결과적으로 격렬한 전투 중에 전체 CPU 사용량의 1.5% 정도를 줄일 수 있습니다···”
황정호 파트장은 유인국의 성과가 1.5%밖에 안 된다는 것이 다행이라고 생각했다. 그는 손뼉을 치며 말했다.
“오~ 유인국 님이라고 했죠? 인상 깊네요. 여러분 1.5%의 성능을 올리기는 쉬워 보이지만, 사실 쉽지 않아요. 하하하...”
그리고 그는 유인국의 발표를 빨리 마무리 지으려고 했다. 그래야 최인호가 유일하게 성능 측정을 "잘, 그리고 많이" 준비 한 사람이 될 테니까.
"자~ 그럼 인국 님 고생하셨습니다.
그러나 유인국의 발표는 이게 끝이 아니었다.
Comment ' 0