Wie messe ich die Startzeit von Firefox?

7

Ich möchte messen, wie lange es dauert, bis einige Software gestartet wird.

Ich kenne den Befehl, timeaber im Fall von Firefox (iceweasel für mich auf Debian) wird dieser Befehl nur gedruckt, wenn ich Firefox öffnen lasse. Wenn ich starte:

$ time iceweasel www.google.com

Ich habe erst eine Startzeit, nachdem ich Firefox geschlossen habe, und diese Zeit zeigt nur an, wie lange ich Firefox geöffnet gelassen habe. Zum Beispiel:

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

Wie kann ich genau wissen, wie viel Firefox zum Starten benötigt wird?

ppr
quelle
5
Definieren Sie "Start". Ist es, wenn es sein erstes Fenster öffnet, wenn es zum ersten Mal auf Mausklicks reagiert, wenn es das Laden der Website beendet hat usw.
derobert
@derobert Mit "Start" meine ich das Fenster zu sehen. Tatsächlich ist es mir eigentlich egal, ich möchte nur eine genaue Methode zum Messen des "Starts" (was auch immer es ist), um einige Tests durchführen zu können (dh einige Addons entfernen und sehen, ob es eine Verbesserung gibt).
ppr
1
Sie können auch diese Erweiterung ausprobieren: about: startup .
don_crissti

Antworten:

6

Das ist hacky und nicht beschreibbar.

Firefox kann Javascript über die Befehlszeile wie folgt ausführen:

firefox "javascript:alert(Date.now())"

Dadurch wird Firefox geöffnet und Javascript ausgeführt, das ein Meldungsfeld mit der aktuellen Epochenzeit in Millisekunden öffnet.

Sie können die Anzahl der Millisekunden, die in der Epochenzeit verstrichen sind, an Ihrer Befehlszeile mit abrufen

date +%s%N | cut -b1-13

Um Ihre Frage zu beantworten, laufen Sie

date +%s%N | cut -b1-13; iceweasel "javascript:alert(Date.now())"

Subtrahieren Sie dann die Nummer in Ihrem Terminal von der Nummer in Firefox. Dies gibt Ihnen die Anzahl der Millisekunden an, die Firefox zum Öffnen und Anzeigen von grundlegendem Javascript benötigt hat.

Quellen:

Melker
quelle
3

Sie können ein Tool verwenden, mit dem die mit der PID verknüpfte Fenster-ID abgerufen werden kann, und warten, bis dieses Fenster erstellt wurde. Die Prozess-ID des zuvor gestarteten Programms ist in $!Variablen verfügbar .

Als Beispiel: Mit wmctrlone können Sie eine Liste aller Fenster abrufen und prüfen, ob eines von ihnen mit der angegebenen PID gestartet wurde:

$ 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

Die Fenster-ID befindet sich in der ersten Spalte und die Prozess-ID in der dritten Spalte. Daher müssen wir sie weiterleiten, awkum zu überprüfen, ob der angegebenen Prozess-ID ein Fenster zugeordnet ist.

wmctrl -lp | awk -v pid="$!" '$3==pid{print "Window is created with id "$1}'

Jetzt müssen wir es in eine Schleife setzen und die Zeit messen, bis der obige Befehl erfolgreich endet:

firefox & time (while wmctrl -lp | awk -v pid="$!" '$3==pid{exit 1}'; do :; done)

Also starten wir Firefox und starten sofort eine Schleife, die im Körper nichts tut ( :) und endet, wenn ein awkWert ungleich Null zurückgegeben wird.

jimmij
quelle
2
  1. Starten Sie im Hintergrund einen abhörenden Netcat
  2. Rufen Sie Firefox an, um eine Verbindung herzustellen
  3. Warten Sie mit einem waiteingebauten Bash.
  4. endlich alles töten 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>
Peter - Setzen Sie Monica wieder ein
quelle
2

AFAIK die Startzeit in Millisekunden finden Sie hier:

about: Telemetrie -> Einfache Messungen -> firstPaint

dc_coder_84
quelle
1

Sie können die gemessene Startzeit aus der Konfiguration ablesen (about: config):

browser.slowStartup.averageTime

Sebastiaan
quelle