Làm cách nào để đo thời gian khởi động của Firefox?


7

Tôi muốn đo thời gian để một số phần mềm bắt đầu.

Tôi biết lệnh timenhưng trong trường hợp firefox (iceweasel cho tôi trên Debian), lệnh này chỉ in khi tôi mở firefox. Nếu tôi khởi chạy:

$ time iceweasel www.google.com

Tôi sẽ có thời gian khởi động chỉ sau khi tôi đóng firefox và lần này sẽ chỉ cho biết tôi đã mở firefox bao lâu. Ví dụ:

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

Làm thế nào tôi có thể biết chính xác cần bao nhiêu firefox để bắt đầu?


5
Xác định "bắt đầu". Có phải khi nó mở cửa sổ đầu tiên, khi nào nó sẽ phản hồi lần đầu tiên khi nhấp chuột, khi hoàn thành tải trang web, v.v.
derobert

@derobert Bởi "bắt đầu" Ý tôi là nhìn thấy cửa sổ. Trên thực tế, tôi không thực sự quan tâm, tôi chỉ muốn một cách chính xác để đo "khởi động" (dù đó là gì) để có thể thực hiện một số thử nghiệm (nghĩa là loại bỏ một số addon và xem liệu có cải thiện không).
ppr

1
Bạn cũng có thể thử tiện ích mở rộng này: about: startup .
don_crissti 4/2/2015

Câu trả lời:


6

Đây là hacky và không thể mô tả.

Firefox có thể chạy javascript thông qua dòng lệnh như vậy:

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

Điều đó sẽ mở Firefox và chạy javascript bật lên một hộp thông báo chứa thời gian kỷ nguyên hiện tại đến mili giây.

Bạn có thể nhận được số mili giây trôi qua trong thời gian kỷ nguyên tại dòng lệnh của bạn với

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

Vì vậy, để trả lời câu hỏi của bạn, chạy

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

Sau đó trừ số trong thiết bị đầu cuối của bạn khỏi số trong Firefox. Điều này cung cấp cho bạn số mili giây mà Firefox đã dùng để mở và hiển thị một số javascript cơ bản.

Nguồn:


3

Bạn có thể sử dụng một số công cụ có thể nhận id cửa sổ được liên kết với PID và đợi cho đến khi cửa sổ đó được tạo. Id quá trình của chương trình đã bắt đầu trước đó có sẵn trong $!biến.

Ví dụ - sử dụng wmctrlmột người có thể lấy danh sách tất cả các cửa sổ và kiểm tra xem có bất kỳ cửa sổ nào được khởi động bằng cách đưa ra PID không:

$ wmctrl -lp
0x00e00003 -1 397    jjmach sawfishpager
0x01200003  6 399    jjmach wmctrl -lp jimmij@jjmach: /proc
0x0180004b  0 655    jjmach emacs@jjmach.jj
0x02800078  7 680    jjmach How to measure Firefox's startup time? - Mozilla Firefox

Id cửa sổ nằm trong cột đầu tiên và xử lý id ở vị trí thứ ba, vì vậy chúng ta cần chuyển nó sang awkđể kiểm tra xem id quy trình đã cho có cửa sổ liên kết hay không.

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

Bây giờ chúng ta cần đặt nó trong một số vòng lặp và đo thời gian cho đến khi lệnh trên sẽ kết thúc thành công:

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

Vì vậy, chúng tôi bắt đầu firefox và ngay lập tức bắt đầu một vòng lặp mà trong cơ thể không có gì ( :) và kết thúc khi awktrả về giá trị khác không.


2
  1. bắt đầu một netcat nghe trong nền
  2. gọi firefox để kết nối nó
  3. chờ đợi nó với một waitbash dựng sẵn.
  4. cuối cùng giết tất cả 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>

2

AFAIK thời gian khởi động tính bằng mili giây có thể được tìm thấy ở đây:

về: đo từ xa -> Các phép đo đơn giản -> đầu tiên


1

Bạn có thể đọc thời gian khởi động đo được từ cấu hình (about: config):

browser.slowStartup.alusiveTime

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.