0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

fishの動きが遅い

Last updated at Posted at 2020-03-04

本記事の内容

fish shellが重いため原因を特定して解決しました

fishが重くなった原因

ホームディレクトリに.gitファイルができてしまっていた事が原因
fishのプロファイルにはcommand git ls-files --others --exclude-standard | wc -l | string trimがあり、Gitにおける非追跡ファイルのパス文字列の改行数を数える(?)という処理が行われているようです。

ホームディレクトリに.gitができてしまうと、ホームディレクトリ配下の全てのファイルを対象に、過去に一度もステージングエリアに追加していないファイルを検索します。膨大な数のため処理に時間がかかります。

つまりホームディレクトリに.gitファイルができてしまったことで、fish profile(/Users/ユーザ名/.config/fish/profile.txtにあった)の、gitの非追跡ファイルのパスの文字数カウント処理に時間がかかってしまったのが原因でした

原因を突き止めた過程

  1. fishの起動時プロファイルを取得する
  2. 明らかに時間がかかっているプロファイルを特定(目視)
  3. 2.の処理の意味を調べる
  4. command git ls-files --others --exclude-standardをホームディレクトリで実行
  5. ホームディレクトリに.gitが生成されていた
  6. gitを削除
  7. 解決

原因を突き止めるために取った行動

1.fishの起動時プロファイルを取得する

こちらの記事を参考にさせていただきました。
fish shellの起動時間が遅いのでプロファイルを取得する

以下を実行
$ fish --profile profile.txt
$ exit
$ sort -k 2 -nr profile.txt

2.明らかに時間がかかっているプロファイルを特定(目視)

:以下の処理で10秒以上かかっていた
command git ls-files --others --exclude-standard | wc -l | string trim
# 約50000

3. 2.の処理の意味を調べる

(git公式)[https://git-scm.com/docs/git-ls-files]

ls-files

git-ls-files - Show information about files in the index and the working tree

ワークツリーとインデックスに関する情報を表示

ls-files --others

現在管理していないファイルを表示

--exclude-standard

Add the standard Git exclusions: .git/info/exclude, .gitignore in each directory, and the user’s global exclusion file.

対象のリポジトリで指定している[.gitignore, .git/info/exclude]にあるパターンに一致するファイルを表示。

wc -c

テキストの文字列を数えたりするコマンド。-lを付けることで改行の数を数える。

string trim

fish
fishにおける、文字列操作のコマンド。trimは各文字列の前後の空白を削除するそうです。

4. command git ls-files --others --exclude-standardをホームディレクトリで実行

多くのファイルパスが表示されました

5.ホームディレクトリに.gitが生成されていた

.gitを削除しました。

(参考にさせて頂いた記事)

6. gitを削除

おしまい

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?