

GNU Globalでgtagsファイルが10G以上の巨大なファイルを作成しています。  
それに伴い、CPUもメモリーもフル稼働し、まったく使い物にならない状態に  
なっています。  
現在、ActiveMonitorでPythonをキルし、巨大なgtagsを削除しています。

漠然とした質問で恐縮なのですが、GNU Globalのパフォーマンスを  
改善する方法を教えて下さい。

環境はMacOS X１０．１０．５  
Globalは Homebrewでインストールし、version 6.5.1

＜追加情報＞  
Emacsの設定で以下のようになっています。  
ruby, c++, cファイルのみ編集したときだけgtagsを更新するように  
したいのですが、これが悪さをしているかもしれません。  
rubyファイルと画像ファイルなどが同一フォルダにあると  
一緒にインデックスを作成しているのでしょうか？  
これが原因なのか？かも。

> (defun update-gtags ()  
>  (interactive)  
>  (set-process-sentinel  
>  ;; 裏でglobal -uを実行させて  
>  (start-process "gtags-update" nil "gtags" "--gtagslabel=pygments")  
>  (lambda (proc change)  
>  ;; 正常終了のときにメッセージを表示する  
>  (when (string-match "finished" change)  
>  (message "GTAGS is updated")))))
>
> (add-hook 'ruby-mode-hook  
>  '(lambda ()  
>  (add-hook 'after-save-hook 'update-gtags)))  
>  (add-hook 'c++-mode-hook  
>  '(lambda ()  
>  (add-hook 'after-save-hook 'update-gtags)))  
>  (add-hook 'c-mode-hook  
>  '(lambda ()  
>  (add-hook 'after-save-hook 'update-gtags)))


CC BY-SA 3.0
2015-12-16T01:08:51.377
20044
2015-12-19T00:16:37.787
2015-12-19T00:16:37.787
3639
4646
question
emacs
GNU Globalで作成されるgtagsが巨大すぎる


不要なファイルがインデックス対象となっている可能性の他に、1行が非常に長いファイルがインデックス対象となっている可能性があると思います。

gtags が生成する GPATH, GTAGS, GRTAGS のうち、GTAGS
には元のソースコードの行が取り込まれるため、1行が非常に長いファイルがあると、GTAGS ファイルが肥大し、生成に時間もかかる、ということがあり得ます。

JavaScript の minify されたファイルなど、自動生成されたファイルの場合、1行が長くなるということがありがちです。

gtags に -v
オプションを付けて実行すると、処理対象のファイル名が表示されるので、不要なファイルや、処理に時間のかかっているファイルを見つけることができると思います。


CC BY-SA 3.0
2015-12-17T14:15:16.620
20124
2015-12-17T14:15:16.620
13725
20044
answer