Emacs Lisp 코드도 사람이 작성하든 AI가 작성하든 버그가 없을 수가 없다. 그 중에서 가장 사람을 괴롭히는 버그로 사용성을 떨어뜨리는 퍼포먼스 문제가 있다. 키를 하나 눌렀는데 잠깐 멈추는 증상이 발생한다면 얼마나 답답할까. 솔직히 이런 버그를 만나게 되면 Emacs를 쓰기 싫을 정도로 기분이 나빠지게 되기도 한다.
그렇다면 이런 문제를 경험했을 때 무엇이 원인인지 어떻게 알 수 있을까?
Emacs는 기본적으로 이런 경우를 위한 Profiler 도구를 제공한다.
Emacs Profiler 사용법
Profiler 사용법은 간단하다. 우선 profiler-start 함수를 실행시킨다.
M-x profiler-start
이 함수를 실행시키면 무엇을 측정할 것인지를 먼저 물어온다. CPU와 메모리 사용량 혹은 둘 다 중 원하는 것을 선택하면 된다.
측정을 원하는 항목을 선택하면 다시 일상적인 화면으로 돌아오는데 이제 원하는 커맨드나 기능을 실행시켜서 퍼포먼스가 떨어지는 상황을 연출한다.
이후 원하는 상황이 나왔다면 profiler-repot 함수를 실행시켜 보자.
M-x profiler-report
그러면 start 부터 report 까지 실행된 코드들의 측정 내역을 트리 형식으로 정리해서 보여주는 윈도우가 뜬다. 여기의 내용을 살펴보면서 어떤 함수가 실행에 얼마나 시간이 걸렸는지 혹은 메모리를 얼마나 사용했는지를 파악할 수 있다.
당연하겠지만 트리 형식이기 때문에 세부 내역을 탭 키를 이용해 펼쳐 볼 수 있다.
여담
이런 식으로 문제의 원인을 찾고 버그를 수정할 수 있다면 참 좋겠다. 하지만 개인적인 실력으론 아직 Emacs Lisp이 난해하다고 느끼고 있어서 오픈소스 패키지의 버그를 수정해 본 경험은 없다.
다만 이 도구로는 문제가 되는 패키지를 찾을 수는 있다. 따라서 해당 패키지를 제외시키는 식으로 설정을 고치는 데는 큰 도움이 되었다.
0 comments:
댓글 쓰기