2010-12-04 10 views

答えて

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の両方で動作し、ナノ秒の精度を実現するはずです。

+0

私は最初に投稿したものに非常に重要なスペースを追加しました。 –

+1

'setopt prompt_subst'も必ず確認してください。そうでなければ、' $(date ..) '部分は置換されません。 – blueyed

+0

上記の各行が正確に何をしているのか、いくつかメモを追加してください。 –

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/zprofzprofに一時的にラップするのと同じくらい簡単です。これにより、解釈が容易な冗長なプロファイリングテーブルがいくつかダンプされます。

詳細情報zshmodules(1)マンページ。

私は(チェックイン-変化をvcs_info、抗原、NVM、zshの-MIME-セットアップ、インタプリタのバージョンチェックなどrbenv initを、)私は、リマインダとしてSLOWコメントを追加して、試してください特に低速であるものを見つける

回避策を見つけることができます。遅いスタートアップは大悲しみを引き起こす可能性があるので、私はzshパッケージ/フレームワードを避ける傾向があります。 compinitは私が喜んで住んでいる最も遅いもので、起動時間の半分くらいです。

関連する問題