如何测量Firefox的启动时间?

如何测量Firefox的启动时间?

我想测量一些软件启动需要多长时间。

我知道该命令time,但对于 Firefox(Debian 上的我是iceweasel),该命令仅打印我打开 Firefox 的时间。如果我启动:

$ time iceweasel www.google.com

我只有在关闭 Firefox 后才会有一个启动时间,这个时间只会指示我让 Firefox 打开了多长时间。例如:

real    0m50.565s
user    0m4.276s
sys 0m0.248s

我怎样才能确切地知道 Firefox 需要启动多少?

答案1

这是很hacky并且无法编写脚本的。

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

窗口 id 位于第一列,进程 id 位于第三列,因此我们需要通过管道将其连接到awk以检查给定进程 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 并立即启动一个循环,该循环在 body 中不执行任何操作 ( ),并在返回非零值:时结束。awk

答案3

  1. 开始一个监听网猫在后台
  2. 调用 firefox 进行连接
  3. 用内置的 bash 等待它wait
  4. 最后杀死一切 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

相关内容