1 điểm bởi GN⁺ 2023-11-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Sau các đợt tối ưu hóa trong năm 2023, Firefox không chỉ cải thiện trên benchmark mà còn cho thấy tiến bộ về tải trang, độ phản hồi khi nhập liệu và thời gian thực thi JavaScript trong telemetry từ người dùng thực tế
  • Mozilla đang thúc đẩy Speedometer 3 cùng các trình duyệt khác để tạo ra bài kiểm tra phản ánh tốt hơn hiệu năng mà người dùng cảm nhận trên các trang web thực tế
  • Thời gian từ lúc nhận byte đầu tiên đến First Contentful Paint đã giảm từ khoảng 250ms đầu năm xuống 215ms vào tháng 10, giúp phản hồi tải gần như nhanh hơn 15%
  • Phân vị 95 của thời gian thực thi JavaScript trong lúc tải trang đã giảm 300ms, từ khoảng 1560ms xuống khoảng 1260ms, và việc tối ưu SpiderMonkey có liên quan đến cải thiện này
  • Sau các bản phát hành Firefox 116 và 117, độ trễ gõ phím chậm cũng giảm từ khoảng 65ms xuống dưới 59ms, cho thấy mức cải thiện 10% giúp giảm hiện tượng khựng khi gõ

Vì sao khó đo hiệu năng thực tế của người dùng

  • Firefox là phần mềm máy khách phức tạp có chạy mã của bên thứ ba, nên rất khó đánh giá thay đổi trong trải nghiệm thực tế của người dùng chỉ bằng các chỉ số phòng thí nghiệm được kiểm soát
  • Để xem hiệu năng trình duyệt, cần các chỉ số thời gian đã được ẩn danh như tải trang, độ phản hồi và thời gian khởi động
  • Vì phải xử lý dữ liệu trong khi vẫn duy trì tiêu chuẩn bảo vệ quyền riêng tư, việc phân tích có những ràng buộc nhất định
    • Do phụ thuộc vào các chỉ số tổng hợp, không có khả năng chỉ ra chính xác dữ liệu của một website cụ thể
    • Việc rút ra kết luận có thể hành động từ dữ liệu đã thu thập cũng không hề dễ dàng
  • Speedometer 3 là nỗ lực tạo ra bài kiểm tra hiệu năng mô phỏng trải nghiệm người dùng thực tế, giúp các trình duyệt thúc đẩy cải tiến dựa trên người dùng thật và trang web thật

Cải thiện tải trang và thời gian thực thi JavaScript

  • Với cảm nhận về hiệu năng tải trang, First Contentful Paint là chỉ số phù hợp hơn so với sự kiện onload
  • Tiêu chí đo là thời gian từ lúc nhận byte đầu tiên từ mạng cho đến FCP
    • Giá trị này cho thấy người dùng nhận được phản hồi rằng trang đang tải thành công nhanh đến mức nào
    • Bản thân trang web cũng ảnh hưởng lớn, nhưng nếu hiệu năng tổng thể của trình duyệt tốt hơn thì con số này có thể giảm xuống
  • Thời gian liên quan đến FCP đã giảm từ khoảng 250ms đầu năm xuống 215ms vào tháng 10
    • Tốc độ người dùng nhận được phản hồi tải trang gần như nhanh hơn 15% so với đầu năm
    • Cải thiện này đến từ các công việc tối ưu hóa không trực tiếp nhắm vào tải trang
  • Thời gian thực thi mã JavaScript trong lúc tải trang được so sánh theo phân vị 95
    • Chỉ số này cho thấy còn dư địa giảm ma sát cho người dùng trên các trang nhiều JavaScript
    • Đã giảm từ khoảng 1560ms đầu năm xuống khoảng 1260ms vào tháng 10
    • Mức giảm 300ms, gần 20% cải thiện, có khả năng liên quan đến phần đáng kể của việc giảm thời gian FCP
  • Engine JavaScript SpiderMonkey đã nhận được nhiều tối ưu hóa đáng kể thông qua công việc với Speedometer 3, dẫn đến cải thiện thời gian thực thi JavaScript

Những thay đổi quan sát được về độ phản hồi khi nhập liệu

  • Độ phản hồi sau khi tải trang được đo bằng “keypress present latency”
    • Đây là thời gian từ lúc nhấn phím trên bàn phím cho đến khi kết quả của thao tác đó được hiển thị trên màn hình
    • Trang web có thể chạy JavaScript trên main thread để xử lý sự kiện keypress, nên có nhiều công việc tham gia hơn so với việc chỉ render văn bản đơn thuần
  • Phần lớn thao tác gõ là nhanh và chủ yếu bị giới hạn bởi phần cứng như tần số quét màn hình, nhưng các trường hợp nhập liệu chậm lại gây cản trở đáng kể cho trải nghiệm sử dụng
  • Vì việc giảm nhẹ các trường hợp tệ nhất là quan trọng, chỉ số này cũng được xem theo phân vị 95
  • Phân vị 95 của keypress present latency phần lớn trong năm ở mức khoảng 65ms, rồi giảm xuống dưới 59ms sau các bản phát hành Firefox 116 và 117 vào tháng 8
    • Các trường hợp gõ phím chậm nhất đã được cải thiện khoảng 10%
    • Người dùng sẽ cảm nhận phản hồi tức thì hơn và ít bị gián đoạn hơn khi gõ
  • Những cải thiện trong telemetry cho thấy các nỗ lực hiệu năng trong năm 2023 thực sự đã mang lại tác động tích cực cho người dùng Firefox, đồng thời vẫn còn chỗ cho các tối ưu hóa tiếp theo

1 bình luận

 
GN⁺ 2023-11-01
Các ý kiến trên Hacker News
  • Gần đây có thể cảm nhận một cách chủ quan rằng Firefox phản hồi nhanh hơn, và những cải tiến này thật sự đáng cảm ơn và khiến tôi hài lòng
    Tuy nhiên tôi vẫn hơi lấn cấn với phương pháp đo lường có mức ẩn danh hóa mạnh. Có thể là do bản thân web đã nhanh hơn, hoặc mọi người đã dùng phần cứng tốt hơn chăng?
    Nếu các trang có nhiều người truy cập được tối ưu hơn và triển khai phiên bản nhẹ hơn, thì trên dữ liệu telemetry, trung bình mọi thứ có thể trông như nhanh hơn một chút. Việc thay phần cứng, cập nhật hệ điều hành và driver cũng có thể tương tự

    • Tôi từng dùng một bản Firefox cũ từ năm 2020 và chỉ cập nhật sau vấn đề bảo mật WebP, và phiên bản mới ngay lập tức cho cảm giác nhanh hơn
    • Vì các phiên bản Firefox cũ vẫn còn được dùng, có thể so sánh xem cải thiện là nhờ bản cập nhật của chính Firefox hay nhờ web nói chung đã nhanh hơn
    • Cách dễ nhất để tăng tốc dường như là giữ nguyên phần mềm và để năng lực xử lý cùng mạng tiếp tục tốt lên
      Trong lịch sử, phần mềm hành xử như chất khí: lấp đầy không gian và ngốn tài nguyên, mà những tài nguyên đó thường không thuộc về người viết phần mềm
      Không phải phần mềm đang ăn cả thế giới, mà nó đang ăn tài nguyên máy tính và băng thông mà ta trả tiền hằng tháng
    • Trong 6 tháng qua, Firefox dần cho cảm giác như một chương trình nặng nề, và vì các lỗi sập ngẫu nhiên cùng hiện tượng khựng, tôi đã nghĩ đến chuyện chuyển sang Chrome
      Trước khi đọc bài này tôi không nhận ra, nhưng gần đây cảm giác đó dường như đã biến mất, và tôi cũng đã ngừng nghĩ đến việc chuyển đổi
    • Web thực sự đang nhanh lên. Các chỉ số tổng hợp toàn cầu cho thấy xu hướng giảm chậm nhưng đều, và tôi cho rằng việc Google thúc đẩy bằng cách liên kết chỉ số hiệu năng với thứ hạng tìm kiếm có tác động lớn
      Nhưng dữ liệu trong bài này cho thấy những thay đổi hiệu năng theo từng bậc rõ rệt, khớp với việc phát hành các phiên bản trình duyệt. Sẽ không trung thực nếu không ghi nhận nỗ lực cải thiện hiệu năng của đội Firefox
  • Thật vui khi thấy Mozilla thực sự cải thiện Firefox thay vì chỉ di chuyển qua lại các thành phần UI
    Là người dùng lâu năm, tôi muốn cổ vũ bên yếu thế để duy trì dù chỉ một chút cán cân quyền lực của web. Việc Mozilla tập trung vào công nghệ hơn chính trị là điều tốt, và dù sao Firefox cũng là phần mềm tốt nên tôi không có phàn nàn lớn

    • Mozilla tiếp tục thay đổi UI cũng không sao. Nếu điều đó giúp tăng người dùng thì là chuyện tốt, và để Mozilla không phải lúc nào cũng chỉ đi sau một bước, họ cần có quyền tự do chấp nhận rủi ro
      Ví dụ FirefoxOS có vẻ là một thất bại, nhưng vốn dĩ phần lớn các thử thách lớn đều thất bại. Nếu quá dè sẻn với những nỗ lực dài hạn như vậy, rồi sẽ muộn màng nhận ra tình cảnh như Microsoft: trong giới trẻ ngày nay có người còn không có laptop, và điện thoại thì đương nhiên không chạy Windows. Tôi nghĩ có thêm những dự án như FirefoxOS cũng ổn
    • Không chỉ tập trung vào công nghệ, mà tập trung vào sản phẩm, tức Firefox, cũng quan trọng
      Nếu chỉ nói là tập trung vào công nghệ, họ cũng có thể dồn toàn bộ nguồn lực vào Firefox OS
    • Tôi đồng ý với việc ủng hộ bên yếu thế vì cán cân quyền lực của web, và sau khi đổi sang Firefox vài năm trước, tôi thực sự hài lòng với việc chuyển đổi
  • Sau khi nâng cấp lên 118, cứ vài ngày Firefox lại bị treo ngẫu nhiên. Không phải vấn đề CPU hay swap, nhưng mọi cửa sổ đều đóng băng và cần killall firefox; dù vậy Firefox vẫn thoát khá sạch sẽ
    Vì spam trên công cụ tìm kiếm nên cũng khó tìm thông tin liên quan, và trước bản 118 thì nhiều năm liền vẫn ổn. Nó xảy ra quá hiếm nên cũng khó làm các thử nghiệm tái hiện như tắt extension hay tạo profile mới, có lẽ đành chịu vậy

    • Tôi là lập trình viên Firefox. Tùy môi trường mà có vài cách chẩn đoán. Nếu trên Linux mọi thứ đều bị đóng băng, khả năng cao vấn đề nằm ở tiến trình cha, tiến trình cấp cao nhất quản lý các tab
      Nếu trình báo cáo sự cố đang bật, bạn có thể gửi SIGABRT tới tiến trình cha; sau khi khởi động lại, sẽ có mục trong about:crashes để bạn gửi lên
      Nếu đang dùng Firefox của bản phân phối và có gdb cùng debuginfod, bạn có thể gắn gdb vào tiến trình cha của Firefox, lấy symbol rồi chạy thread all apply bt để dump stack của tất cả thread trong tiến trình cha
      Nếu đang dùng bản build của Mozilla, có thể dùng https://firefox-source-docs.mozilla.org/toolkit/crashreporte... để tích hợp với symbol server riêng. Tùy bản phân phối, cách này có thể dùng được hoặc không với Firefox của bản phân phối
      Khi có thông tin sự cố, bạn có thể đăng lên bug tracker của bản phân phối hoặc https://bugzilla.mozilla.org/enter_bug.cgi?product=Core kèm stack, phiên bản Firefox, báo cáo sự cố, about:support và các thông tin liên quan
      Trên Linux, các tình trạng treo kiểu này thường là lỗi giữa Firefox và môi trường desktop, hoặc vấn đề driver đồ họa; nếu có stack thì có thể thu hẹp nguyên nhân rất nhiều. Đôi khi chỉ cần cập nhật gói hoặc đổi một thiết lập là giải quyết được
    • Tôi cũng gặp triệu chứng tương tự trên Brave ở hai máy tính, và tắt tăng tốc phần cứng thì hết. Cả hai đều dùng đồ họa Intel
    • Tôi tò mò không biết bạn có đang dùng phiên bản không phải stable hoặc long-term support của bản phân phối Linux không
      Các phàn nàn về độ bất ổn của Firefox thấy trên HN nhìn chung dường như đến từ người dùng Windows, hoặc người dùng Linux cài bản mới nhất ngoài hệ thống đóng gói của bản phân phối. Ngược lại, tôi dùng Firefox trên Debian stable nhiều năm và chưa từng gặp các lỗi được mô tả trong những thread như thế này
    • Nếu xảy ra khi đang nhập liệu, có thể là https://bugzilla.mozilla.org/show_bug.cgi?id=1844505. Tôi cũng bị ảnh hưởng bởi bug này, nhưng đến giờ chưa nghĩ đến việc tìm ticket
      Để tái hiện có lẽ cần thử dùng binary Mozilla nguyên bản
  • Tin tốt, và khiến tôi muốn dùng thử lại
    Tôi đã dùng gần 20 năm, từ thời Phoenix/Firebird với kiểu cài đặt “giải nén vào đâu đó”, nhưng đã chuyển sang trình duyệt dựa trên Chromium vì khác biệt tốc độ cảm nhận được
    Tôi không chạy benchmark để kiểm chứng nghi ngờ hay đo xem thao tác nào trong Firefox chậm hơn bao nhiêu mili giây, nhưng nếu là công cụ dùng suốt cả ngày hằng ngày, kể cả cho công việc, thì rất dễ cảm nhận được khác biệt
    Gần đây thấy nhiều báo cáo cải thiện hiệu năng và số liệu sử dụng thực tế, tôi có ý định dùng thử lại vài ngày. Nếu không cảm thấy khác biệt, hoặc thực sự thấy nhanh hơn, tôi sẽ quay lại
    Lý do muốn quay lại là vì nhất thiết cần có một engine trình duyệt thay thế. Tôi không muốn các ủy ban tiêu chuẩn trở thành kiểu sự kiện “năm nay Google đã quyết định phải làm như thế này”

    • Hiệu năng tốt cộng với các tiện ích bổ sung tuyệt vời như Multi Account ContainersTree Style Tabs thì sẽ thành một trình duyệt xuất sắc
  • Tính năng “sát thủ” của Firefox vẫn là cho phép sự linh hoạt trong quản lý tab. Nhờ Sidebery và TreeStyleTab mà tôi vẫn tiếp tục ở lại hệ sinh thái Firefox
    Với cách dùng tích rất nhiều tab hoặc dùng tab như danh sách việc cần làm, trải nghiệm tốt vượt trội đến mức khó tưởng tượng mình dùng thứ khác
    Trên Android tôi cũng dùng Firefox vì có các tiện ích bổ sung uBlock Origin và Dark Reader. Việc duyệt web trên di động tốt hơn nhiều. Không phải tôi trung thành mạnh mẽ với bản thân Firefox, chỉ là tôi chưa tìm được trình duyệt dựa trên Chromium nào hợp với mình đến mức này

    • Tab dọc mặc định của Edge cũng khá tốt. Không nhiều tính năng, chỉ đại loại là tab dọc có tự động unload và nhóm tab, nhưng đổi lại rất ổn định và hầu như không có lỗi
    • Với người tích nhiều tab, Auto Tab Discard là cần thiết. Nó cho các tab nền không dùng đến ngủ đi để không ăn tài nguyên
      Và tôi cũng thích việc có thể dùng CSS để biến thanh tab, chẳng hạn, thành ba hàng có thể cuộn
    • Tôi tò mò khi dùng TreeStyleTab thì bạn có bỏ tab phía trên đi không, hay hiển thị cả hai trên màn hình
      Trên màn hình nhỏ, nếu có cả hai thì cảm giác mất khá nhiều không gian hiển thị
    • Tôi đã thử cả hai, nhưng cuối cùng vẫn thích nhóm tab của Safari hơn vì nó được tích hợp mượt mà vào trải nghiệm trình duyệt
  • Tôi đã dùng Firefox làm trình duyệt chính trong nhiều năm và nó rất tốt. Có thể vì tôi chủ yếu chạy trên thiết bị cấu hình cao, nhưng trên Linux, Windows và Mac đều không có gì phàn nàn đáng kể

    • Tôi không dùng thiết bị cấu hình cao mà cũng thấy vậy. Các thiết bị tôi dùng hằng ngày đều đã hơn 5 năm tuổi, nhưng tôi hoàn toàn hài lòng với tổ hợp Firefox + uBlock Origin
    • Tôi đã dùng nhiều năm và gần như đồng ý, nhưng nơi từng có vấn đề chỉ là công cụ dành cho nhà phát triển
      Khi mở file JS lớn, debugger chậm đi khá nhiều, và source map còn làm sự chậm chạp đó tăng thêm. Cũng có trường hợp khi dùng source map không phải lúc nào cũng kiểm tra được giá trị biến, nhưng có thể đó là vấn đề cấu hình công cụ build
  • Trong Speedometer 2, Firefox chậm hơn Chrome rất nhiều, còn Chrome chậm hơn Edge một chút. Dù vậy trong đời sống thực tế tôi nghĩ không có khác biệt lớn
    Tôi tôn trọng và tin tưởng bảo vệ quyền riêng tư của Mozilla. Container, khả năng chạy Ublock và Tampermonkey trên di động là những thứ khó định giá

    • Với người dùng máy tính cấu hình thấp thì điều đó vẫn quan trọng. Khi đang đi du lịch, màn hình MacBook của tôi bị vỡ nên vội mua một laptop Celeron 6305 với RAM 4GB; tôi cài Firefox như thường lệ thì nó quá chậm và giật đến mức không dùng được
      Đổi sang Edge thì nhanh hơn nhiều và cũng dùng ít RAM 4GB hơn. Tôi không ngờ khác biệt lại lớn đến vậy, nhưng không thể phủ nhận; trên PC cấu hình thấp, Edge chạy tốt hơn hẳn các trình duyệt khác
    • Các trình duyệt lớn hiện nay có vẻ đều đủ nhanh rồi. Giờ tôi muốn họ tập trung hơn vào giảm tiêu thụ điện năng
    • Liên quan đến chuyện này cũng có https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-b...
    • Với kết nối 75Mbps, Firefox tải ngay mọi thứ tôi cần
      Tôi không hiểu benchmark còn có ý nghĩa gì
  • Tôi tin rằng đội ngũ Firefox biết họ đang làm gì về hiệu năng và đã rút ra kết luận đúng
    Tuy nhiên, một điểm hơi tiếc là tôi cũng muốn thấy thay đổi hiệu năng so với cùng kỳ năm trước để kiểm soát hiệu ứng mùa vụ. Hình 1 là thay đổi theo đơn vị 1/100 giây, nên khi nhìn tín hiệu cỡ này, việc kiểm soát nhiễu có vẻ quan trọng hơn
    Nói thêm là tôi là người dùng hài lòng với Firefox

    • Tôi nghĩ đó chẳng phải là arewefastyet sao
      https://arewefastyet.com/
      Ngoài ra còn có https://wiki.mozilla.org/Areweyet
    • Tôi tò mò ở đây đang giả định hiệu ứng mùa vụ nào. Tôi không rành lĩnh vực hiệu năng trình duyệt, nên không biết liệu tổ hợp công nghệ web mà mọi người tiêu thụ có thật sự thay đổi theo mùa hay không
      Nhìn một cách ngây thơ thì xu hướng ở đây khá nhất quán và tín hiệu có vẻ lớn hơn độ phân tán. Nó trông giống kết quả của việc các kỹ sư giỏi đã tối ưu chỉ số đó trong giai đoạn đo
      Đồng thời tôi đồng ý rằng nếu có trục thời gian dài hơn thì sẽ tốt. Vì cải thiện lớn trong tháng 8 có thể không phải nhờ Firefox 116 ra mắt vào ngày 1/8, mà có thể là do người dân Bắc bán cầu trong mùa nghỉ hè đọc những nội dung nhẹ nhàng hơn
  • Nếu bạn vẫn bám vào các trình duyệt nền tảng Chromium vì cảm giác tốc độ, thì ít nhất cũng nên thử Firefox một lần
    Dạo này tôi dùng ổn đến mức không còn nghĩ đến chuyện quay lại nữa, và việc duy trì mạnh mẽ sự đa dạng trình duyệt là điều thực sự quan trọng cho tương lai của web

    • Tôi đang dùng Brave sau khi tắt phần thưởng, VPN, ví và chỉnh khoảng 20 flag. Với tôi nó nhanh hơn, hỗ trợ extension tốt hơn, ít lỗi hơn, và khi mở ít tab thì cũng dùng ít bộ nhớ hơn. Tôi chọn Brave vì có thể đồng bộ
      Firefox cũng rất ấn tượng, và tôi cũng đã thử một fork tên là Floorp. Nó có vài tính năng bổ sung hữu ích, hỗ trợ đồng bộ, và tôi thấy tốt hơn Firefox thông thường. Trước đây tôi dùng ungoogled-chromium
      https://github.com/Floorp-Projects/Floorp/releases
      Tiếc là theo trải nghiệm của tôi, một số website vẫn hoạt động tốt hơn trên trình duyệt Chromium. Chỉ là trải nghiệm cá nhân, nhưng tôi cũng cảm thấy có kiểu nhận diện dấu vân tay tiêu cực với Firefox trên các trang thuộc Google, và dường như cũng có nhiều rò rỉ bộ nhớ hơn. Vì Manifest V3, cuối cùng có lẽ tôi sẽ chuyển sang Firefox, nhưng hiện tại tôi vẫn ở lại với Brave
  • Tôi thật sự không rõ liệu nó đã tốt hơn chưa, nhưng có hai vấn đề mãi chưa được giải quyết
    Thứ nhất, với video VP9, giải mã video bằng tăng tốc phần cứng hoạt động khá kỳ lạ. Dù tắt đi hoặc ép dùng AV1 thì đôi khi vẫn bị giật
    Thứ hai, trong môi trường đồ họa hybrid, nếu vừa xem video ở nền vừa chơi game thì kWin bị treo, video đang phát trong trình duyệt chuyển sang màu xanh lá, và mọi thứ dùng iGPU hoặc dGPU đều giật nghiêm trọng. Cuối cùng phải đăng xuất rồi đăng nhập lại để khởi động lại session thủ công
    Vấn đề thứ hai có thể do Nvidia prime offload trên Wayland. Có card Nvidia là lỗi của tôi, nhưng tôi chưa tìm được chủ đề liên quan nào trên Bugzilla vẫn chưa được xử lý, và thành thật mà nói tôi hơi sợ báo lỗi rồi bị hỏi vặn. Tôi muốn debug thêm, nhưng không đủ kiên nhẫn
    Chưa đến mức khiến tôi rời Firefox, nhưng đây là hai nỗi phiền dai dẳng. Dù sao cũng chúc mừng đội ngũ. Hôm nay tôi đã chuyển đổi thành công 5 người sang Firefox

    • Trên Linux, giải mã phần cứng tiếc là khá hỗn loạn. Phần lớn các vấn đề kiểu này có khả năng là Firefox đang tích hợp đúng với nhiều API mã hóa/giải mã video, nhưng phía nào đó như driver lại có lỗi
      Nếu dùng máy desktop, cũng đáng thử tắt hoàn toàn giải mã video bằng phần cứng
    • Mẹo: Có một extension Firefox ép YouTube dùng H.264
      Máy của tôi hỗ trợ tăng tốc phần cứng VP9 nhưng độ tin cậy kém, và khi chuyển sang H.264 thì video YouTube phát mượt. Các trang video khác mặc định dùng H.264, nên thực tế chỉ cần cho YouTube
    • Vấn đề thứ hai thật sự khiến tôi phát điên. Suốt vài năm tôi thường mở YouTube hoặc stream Twitch trên màn hình thứ hai, nhưng giờ thì liên tục gặp tụt khung hình, video giật và treo
      Đây đúng là một hồi quy hiệu năng rất kỳ lạ