いくつかのソフトウェアを起動するのにかかる時間を測定したいと思います。
私はコマンドを知っていますが、time
Firefoxの場合(私はDebianのiceweaselです)、このコマンドは私がFirefoxを開いた時間だけを印刷します。実行する場合:
$ time iceweasel www.google.com
Firefoxを閉じた後にのみ起動時間が表示されます。これは、Firefox を開いた時間だけを表します。たとえば、
real 0m50.565s
user 0m4.276s
sys 0m0.248s
Firefoxの起動に必要な金額を正確にどのように知ることができますか?
答え1
これは非常にハッキーでスクリプトできません。
Firefoxは、次のようにコマンドラインからJavaScriptを実行できます。
firefox "javascript:alert(Date.now())"
これでFirefoxが開き、JavaScriptが実行され、現在のエポック時間(ミリ秒まで正しい)を含むメッセージボックスが表示されます。
コマンドラインからエポック中に経過したミリ秒を取得できます。
date +%s%N | cut -b1-13
したがって、あなたの質問に答えるには、以下を実行します。
date +%s%N | cut -b1-13; iceweasel "javascript:alert(Date.now())"
次に、Firefoxの数字から端末の数字を減算します。これは、FirefoxがいくつかのデフォルトのJavaScriptを開いて表示するのにかかる時間(ミリ秒)を提供します。
源泉:
答え2
PIDに関連付けられているウィンドウIDを取得し、ウィンドウが作成されるのを待つことができるいくつかのツールを使用できます。以前に起動したプログラムのプロセスIDは変数で確認できます$!
。
たとえば - 使用wmctrl
すべてのウィンドウのリストを取得し、そのウィンドウのうち特定のPIDによって開始されたものがあるかどうかを確認できます。
$ wmctrl -lp
0x00e00003 -1 397 jjmach sawfishpager
0x01200003 6 399 jjmach wmctrl -lp jimmij@jjmach: /proc
0x0180004b 0 655 jjmach [email protected]
0x02800078 7 680 jjmach How to measure Firefox's startup time? - Mozilla Firefox
awk
ウィンドウIDは最初の列にあり、プロセスIDは3番目の列にあるため、指定されたプロセスIDに関連付けられているウィンドウがあることを確認するには、それをパイプする必要があります。
wmctrl -lp | awk -v pid="$!" '$3==pid{print "Window is created with id "$1}'
これでこれをループに入れ、上記のコマンドが正常に終了したかどうかを測定する必要があります。
firefox & time (while wmctrl -lp | awk -v pid="$!" '$3==pid{exit 1}'; do :; done)
だから私たちはFirefoxを起動し、本文()で何もせずに:
ゼロ以外の値が返されたときに終わるループをすぐに開始します。awk
答え3
- 始める監視ネットワーク猫バックグラウンドで
- 接続するにはFirefoxに電話してください。
- 組み込みのbashを使用して待ってください
wait
。 - いよいよ殺す
nc -l 64738 & firefox http://127.0.0.1:64738 & wait <...yet to be solved that only the nc should be waited for...> killall firefox <..yet to be solved to not kill your girlfriends browser>
答え4
設定(about:config)で測定された開始時間を読み取ることができます。
browser.slowStartup.averageTime