私のシェルがの方法を取っているようですが起動するには時間がかかりすぎます。それをプロファイリングする方法はありますか?私は何が減速しているか把握することができますか?私の.zshrc/.zshenvをプロファイルすることはできますか?
42
A
答えて
46
ファイルの先頭にこれを追加してみてください:最後に
# set the trace prompt to include seconds, nanoseconds, script name and line number
# This is GNU date syntax; by default Macs ship with the BSD date program, which isn't compatible
PS4='+$(date "+%s:%N") %N:%i> '
# save file stderr to file descriptor 3 and redirect stderr (including trace
# output) to a file with the script's PID as an extension
exec 3>&2 2>/tmp/startlog.$$
# set options to turn on tracing and expansion of commands contained in the prompt
setopt xtrace prompt_subst
と、この:
# turn off tracing
unsetopt xtrace
# restore stderr to the value saved in FD 3
exec 2>&3 3>&-
そして、あなたは、実行のepoch_second.nanosecond時間を示す詳細なログを取得する必要があります各行のGNU date
(およびOSのサポート)にはナノ秒の出力が必要であることに注意してください。
編集:
追加されたコメント
編集2:
それ以降のzsh 4.3.12またはを使用している場合は、代わりにdate
コマンドを使用してのこのようなPS4
を設定することができるはずです。
LinuxとOS Xの両方で動作し、ナノ秒の精度を実現するはずです。
2
あなたの~/.zshrc
(または先頭)の最初の不審なポイントであなたのタイマーを起動することができます。これまで私があまりにも遅いスタートアップを見て、私のようにそれを残せば
integer t0=$(date '+%s') # move this around
... maybe something suspect ...
# End of zshrc
function {
local -i t1 startup
t1=$(date '+%s')
startup=$((t1 - t0))
[[ $startup -gt 1 ]] && print "Hmm, poor shell startup time: $startup"
}
unset t0
これは私に警告します永続的なラッパー。
さらに洗練された測定のために、zprof
というzshモジュールがあります。 ~/.zshrc
の内容をzmodload zsh/zprof
とzprof
に一時的にラップするのと同じくらい簡単です。これにより、解釈が容易な冗長なプロファイリングテーブルがいくつかダンプされます。
詳細情報zshmodules(1)
マンページ。
私は(チェックイン-変化をvcs_info、抗原、NVM、zshの-MIME-セットアップ、インタプリタのバージョンチェックなどrbenv initを、)私は、リマインダとしてSLOW
コメントを追加して、試してください特に低速であるものを見つける
関連する問題
- 1. 1つのMavenプロファイルを別のプロファイルにアクティブにすることはできますか?
- 2. Facebookのプラグインがプロファイル情報を漏洩することはできますか?
- 3. どこでmvc3のプロファイルを見ることができますか
- 4. 私のiPhoneは2つのプロファイルでプロビジョニングできますか?
- 5. Mavenプロファイルは別のMavenプロファイルから継承できますか?
- 6. HttpRuntime.Cacheをプロファイルすることは可能ですか?
- 7. 私のStoryBoardをハードコードすることはできますか?
- 8. SonarQubeのScalaプロファイルはどこですか?
- 9. 私はPHPでキャッシュすることはできますか?
- 10. 電話機の現在選択されているプロファイルを取得することはできますか?
- 11. 私はiPhoneでwebview transperntすることができますか?
- 12. 私はscrollviewにabsolutelayoutを作ることができますか?
- 13. 私のシングルトンは誰が見ることができますか?
- 14. iOS:Safariを経由せずにデバイスに設定プロファイルをインストールすることはできますか?
- 15. ビルド時にiPhoneに配信プロファイルを追加することはできますか?
- 16. ProfライブラリなしでHaskellプログラムをプロファイルすることは可能ですか?
- 17. 私はプライベートメソッドを呼び出すことができますか?
- 18. 私のウェブサイトでPythonでブラウザゲームをコーディングすることはできますか
- 19. いくつか私はこれを働かせることができます
- 20. どのように私は、サーバー上のフォルダを作成していないが、私のコンピュータで(プロファイル/のAppData /ローカル/ Fyooz /)することができますPHP
- 21. MavenプロファイルでwarにwebResourcesを追加し、プロファイルされていないwebResourcesを追加することはできますか?
- 22. クローム拡張機能で別のプロファイルのリンクを開くことはできますか?
- 23. Powershellは話すことができますが、私が話すと書くことができますか?
- 24. 私はUSBのセキュリティドングルをクラックすることはできますか?
- 25. 誰かがこのエラーで私を助けることができますか?
- 26. 私のコードをPLTSchemeで逆アセンブルすることはできますか?
- 27. Eclipseで私自身のエラーを定義することはできますか?
- 28. 私は&&または||を使うべきですか?ここで
- 29. バンドルID iphoneとipadのバージョンは、同じプロファイルを使用できますか?
- 30. 私のbashは、私のファイルを編集することはできません
私は最初に投稿したものに非常に重要なスペースを追加しました。 –
'setopt prompt_subst'も必ず確認してください。そうでなければ、' $(date ..) '部分は置換されません。 – blueyed
上記の各行が正確に何をしているのか、いくつかメモを追加してください。 –