php와 go의 속도 차이

회사에서 내가 개발해 쓰는 스크립트 중에 문자열을 분해해서 인덱스를 구성하는 프로그램이 있다. 대략 1억 2천만번의 반복을 해야 하고, 매 반복마다 수십 개의 if문과 문자열 분해, 때로는 다시 수십 번의 반복을 돌려야 하는 단순 무식한 스크립트이다. 한번 실행하는데 4시간 정도의 시간이 소요 되기 때문에 php-cli로 실행하는데, 굳이 php를 쓰는 이유는 웹사이트와 공통 라이브러리를 쓰기 위해서 뿐이었다.

그런데 이번에 수정을 하다가 결과를 테스트 하는데 4시간이나 걸리는 것이 짜증이 나서, 혹시나 하는 마음에 컨버전을 해 봤다. go 언어로 해당 부분을 다시 짜 돌려 본 것이다. python을 안 쓰고 go를 쓴 이유는 어차피 나는 python이나 go나 초보이고, go가 더 실행이 빠르다는 편견이 있어서 이다. 속도 개선이 얼마나 되는지가 목적이었으므로.

놀라운 것은 같은 일을 하는 go 스크립트를 실행했을 때 90초 밖에 안 걸렸다는 점이다. 4시간 vs 90초. 160배나 빠르다.

실무에 go를 활용 해야겠다는 생각을 하게 된 일이었다.

텍스트큐브 1.8의 플러그인 최소/최대 지원버전 체크 설정의 의문점.

텍스트큐브가 버전 1.8이 되면서 여러 새로운 변경점이 생겼습니다. 그중에 플러그인의 세부 정보를 담은 xml파일에는 “최소 지원 버전 / 최대 지원 버전 / 필요함수 명기”을 할수 있는 기능이 생겼습니다.

형식은 다음과 같습니다.

사용자 삽입 이미지
http://docs.google.com/View?id=dgc24tzr_136ckbg4ngn

이 같은 표현은 텍스트큐브의 버전이 다양해지고, 플러그인이 다양해지면서 꼭 필요한 기능이긴 합니다. 설치했는데 호환이 안되서 오작동 하는 플러그인이 생길 경우 피해가 생길 수 있으니까요.

그런데 생각해보면 좀 이상합니다.

최소 버전 표기는 텍스트큐브 1.7에서는 지원하지 않습니다. 즉 <minVersion>1.8</minVersion> 라고 표기해도, 1.7에서는 자기에게 맞지 않는 버전인지 알 수 없습니다.

최대 버전 표기는 더 이상합니다. 내가 1.8용으로 만든 플러그인이 앞으로 나올 1.9나 2.0에서 호환이 될지, 어느 버전까지 지원할 수 있을지 어떻게 예상할 수 있단 말입니까? 그렇다고 현재 확실한 버전까지 써 놓으면, 플러그인에 별 다른 변경이 없어도 텍스트큐브의 새 버전이 나올 때마다 그 숫자를 갱신해줘야 하는 겁니다.

결국 저 기능은, 사용 기준이나 예를 명확히 하지 않고  ‘이런 기능이 있다’는 안내 수준으로 끝내면, 거의 실용성이 없거나 각자 자기 기준대로 사용될 가능성이 높습니다.

최근 텍스트큐브의 업데이트가 마음에 안 듭니다.

텍스트큐브라는 설치형 블로그의 최대 장점은 개인의 자유로운 활용이고, 그 핵심중 하나는 플러그인의 다양성입니다. 하지만 텍스트큐브 플러그인 개발자들의 의욕은 이미 바닥입니다. textcube.org의 플러그인 항목을 보면 최근 몇 달간 업데이트가 거의 없다시피 합니다.

그런데, 기존 플러그인에 호환성 문제가 발생할 수 있는 업데이트가 텍스트큐브 1.8에 있었습니다. 플러그인 개발에 대한 문서화가 거의 안되어 있었기 때문에 많은 개발자들이 mysql 쿼리를 아무생각 없이 사용했는데, 그것이 1.8부터 막혔기 때문입니다. DB쿼리를 사용하는 상당수 플러그인이 수정되어야 합니다.

아무리 필요성이 있는 업데이트라고 해도…. 텍스트큐브를 더욱더 전문가용 툴로 만들어 버리는 이런 업데이트는 문제가 있다고 봅니다.