Tôi đã viết về tốc độ trình duyệt trước. Chúng ta đã thảo luận tốc độ trình duyệt như biểu hiện của một hoặc nhiều thành phần misconfigured (cấu hình sai) hoặc sub-optimized (chưa tối ưu) trong hệ điều hành, dẫn đến trải nghiệm duyệt web flawed (lỗi). Chúng ta đã cố gắng hiểu vấn đề là gì và làm sao lấy lại giá trị mất đi.
Hôm nay, chúng ta sẽ nói về loại vấn đề tốc độ duyệt web khác. Far end of the spectrum (đầu xa của phổ), benchmark tốc độ trình duyệt. Giả định chúng nên nói cho chúng ta điều gì về sản phẩm lựa chọn và làm chúng ta proud (tự hào) và convinced (tin tưởng) trong quyết định. Test không liên quan đến setup của bạn; chúng có everything to do with (hoàn toàn liên quan) trình duyệt trông như thế nào bên trong. Điều này làm cho chúng totally, completely irrelevant (hoàn toàn vô nghĩa). Hãy để tôi giải thích.
Hiểu công nghệ
Hầu hết mọi người không biết benchmark tốc độ trình duyệt nghĩa là gì và chúng ảnh hưởng sử dụng hàng ngày như thế nào. Nhưng họ hiểu từ fast (nhanh) và fastest (nhanh nhất). Họ tự động dịch từ thành hình ảnh một siêu xe majestic (uy nghi) và tận hưởng khoảnh khắc proverbial arousal (kích thích ngụ ngôn). Thực tế hơi khác.
Benchmark trình duyệt là một loại conceptual superiority contest (cuộc thi vượt trội khái niệm) giữa nhà phát triển code, cố gắng best (vượt qua) nhau bằng cách viết browser engine tối ưu nhất. Nó về single versus multi-threaded processes (tiến trình đơn và đa luồng), mutexing (khóamutex), sandboxing (hộp cát), và các từ geeky (geek) khác.
Truth to be told (thực sự nói), và ít người sẽ nói cho bạn sự thật, browser speed tests (test tốc độ trình duyệt) liên quan đến thực tế như fuel consumption (tiêu thụ nhiên liệu) của Lamborghini LM002. Chúng là một cái glimpse (nhìn thoáng) vào những gì công nghệ dưới capa có thể làm, trong một thế giới hoàn hảo không có user chậm hoặc network congestion (tắc nghẽn mạng). Too bad (quá tệ) thế giới không hoàn hảo. Câu chuyện của tôi như sau:
Trình duyệt của bạn KHÔNG phải là bottleneck (nút cổ chai)
Thực tế đơn giản là, trình duyệt của bạn chỉ là một link (liên kết) trong chuỗi dài thiết bị và phần mềm làm Internet hoạt động. Trình duyệt là endpoint (điểm cuối) đến một multi-layered (đa lớp), multi-tiered (đa cấp) grid (lưới) supremely complex (siêu phức tạp) và convoluted (rối rắm).
Khi bạn gõ địa chỉ trang web bạn muốn xem, một whole series (toàn bộ chuỗi) sự kiện xảy ra trước khi trang web hiển thị và bạn vui. Request (yêu cầu) trang web của bạn được dịch thành packet (gói) dữ liệu được routed (định tuyến) qua network stack (ngăn xếp mạng) của bạn, qua mọi loại filtering tool (công cụ lọc), anti-virus software và firewall, đến router, modem, ISP switch, và sau đó mười hop (nhảy) khác đến Web server thực sự giữ trang.
Mọi thứ trong số này có thể performing at sub-optimal levels (thực hiện ở mức chưa tối ưu), gây ra một tiny delay (chút độ trễ) nhỏ trong quality of service (chất lượng dịch vụ), mà bạn cuối cùng sẽ interpret (diễn giải) như trải nghiệm trình duyệt.
Web server bạn vừa contact có thể bị loaded (quá tải). Trang bạn yêu cầu có thể lớn và chứa third-party code (mã thứ ba) hosted trên server khác. Có thể là Internet rushhour (giờ cao điểm), và provider (nhà cung cấp) generous (hào phóng) over-committed (quá cam kết) đang struggle (đấu tranh). Bạn có thể đang tải phim, cũng có thể ảnh hưởng kết quả. Wireless signal (tín hiệu không dây), nhiều máy chạy và chia sẻ bandwidth resource (nguồn băng thông) cùng lúc, cập nhật phần mềm định kỳ background, CPU load, tất cả đây là một số trong nhiều yếu tố ảnh hưởng duyệt web. Bây giờ, combine (kết hợp) mọi thứ và bạn nhận được một big unknown (đại chưa biết). Nhưng hầu hết mọi người không có idea. Tất cả những gì họ thấy và cảm thấy là loading (tải) trang web được yêu cầu.
Cho tôi một ví dụ cá nhân
Vài tháng trước, tôi upgrade (nâng cấp) đường truyền yếu nhất, 1.5Mbit lên 12Mbit. Hãy cho tôi hỏi một câu hỏi. Bạn nghĩ trải nghiệm duyệt web của tôi improved (cải thiện)? Câu trả lời là KHÔNG! Nếu có bất kỳ thay đổi nào, nó imperceptible (không cảm nhận được). Tôi notice (nhận thấy) sự thay đổi significant (có ý nghĩa), quite linear (khá tuyến tính) trong sustained uploads và downloads (tải lên/tải xuống bền bỉ), và thậm chí ping times đã cải thiện, làm online gaming vui hơn, nhưng browser space (không gian trình duyệt) vẫn untouched (không đụng).
Làm sao, bạn hỏi. Câu trả lời đơn giản: trải nghiệm duyệt web của tôi đã optimized to the max (tối ưu hóa tối đa), independent of (độc lập) băng thông. Đó là thứ đầu tiên và quan trọng nhất bạn cần làm, trước khi cân nhắc tốc độ trình duyệt.
Bạn cần optimize (tối ưu) máy của bạn để bạn nhận được hiệu suất tốt nhất có sẵn. Bạn cần chắc chắn bottleneck (nút cổ chai) nằm ngoài scope of control (phạm vi kiểm soát) của bạn. Bạn muốn bottleneck nằm ở một trong nhiều link ngoài perimeter (chu vi) nhà bạn. Để biết thêm về trình duyệt chậm, xem bài này.
Nhưng nó归结为 (tóm tắt thành) điều này: Nếu bạn có đường truyền 1MB và bạn cần tải 1MB dữ liệu trang web, văn bản, hình ảnh và tất cả, operation (thao tác) sẽ không mất dưới 1 giây, không vấn đề gì. Trình duyệt không thể làm magic (phép thuật).
Benchmarking, nó có nghĩa là gì?
Giả sử setup máy của bạn hoàn hảo và bạn không có security software (phần mềm bảo mật) lame (lố bịch) crippling (làm khuyết) máy, thì bạn có thể bắt đầu nghĩ về test tốc độ trình duyệt, mặc dù nó vẫn là một big cauldron (nồi lớn) unknowns (chưa biết). Bạn sẽ đi về so sánh trình duyệt như thế nào? Load trang web, đúng không? Vâng, theo một cách, đây là correct (đúng), nhưng đừng quên bạn không có control (kiểm soát) over what happens outside (cái xảy ra bên ngoài).
Test truly accurate (thực sự chính xác) duy nhất sẽ là start (khởi động) Web server trên máy của bạn và chạy test chống lại localhost. Cách này bạn sẽ biết không có external factors (yếu tố bên ngoài) impacting (tác động) mạng và carried over (kéo dài) vào browser space, tạo ấn tượng false (giả).
Internet là một cơn bão ever-changing (luôn thay đổi). Ngay cả khi bạn load trang web trong trình duyệt khác nhau trong vài giây từ nhau, bạn vẫn đang chạy experiment (thí nghiệm) dưới different circumstances (hoàn cảnh khác). Cách duy nhất bạn có thể claim (khẳng định) bất kỳ accuracy (độ chính xác) nào là chạy hàng trăm test benchmark chống lại nhiều trang web, nhiều lần qua ngày, các ngày khác nhau trong tuần, vài tuần. Bạn phải làm điều này cho trình duyệt khác nhau, hệ điều hành khác nhau, hardware platform khác nhau, ISP khác nhau, network technology, encryption (mã hóa), v.v. Không ai làm điều này.
Đo lường browser response (phản hồi trình duyệt) không đơn giản, cũng. Điều mắt bạn thấy không phải là điều software thấy. Bạn có thể tạo perception of speed (cảm giác tốc độ) dùng visual transition effects (hiệu ứng chuyển đổi trực quan) bên trong giao diện trình duyệt, trong khi actual rendering (render thực tế) vẫn y nguyên. Ví dụ tốt của perceived (cảm nhận) và true slowness (chậm thực) là mở tab mới trong Internet Explorer, so với đối thủ. Trong khi Firefox, Chrome và phần còn lại mở tab instantaneously (ngay lập tức), khi không bị crippled (làm khuyết) bởi anti-virus ngu ngốc và tương tự, Internet Explorer mất approx. half a second (khoảng nửa giây) mở tab. Điều này làm major difference (sự khác biệt lớn). Ngay cả khi content sau đó load nhanh, overall effect (hiệu ứng tổng thể) bị ruined (phá hủy).
Đến đây, developer (nhà phát triển) đã đến với mọi loại computational benchmarks (benchmark tính toán), stress (thử thách) browser rendering engine, đáng chú ý nhất component (thành phần) Javascript. Bạn chắc chắn thấy big difference (sự khác biệt lớn) trong loại test này.
Tuy nhiên, kết quả cần taken with a pinch of salt (cân nhắc kỹ), và có thể pepper (hạt tiêu), cũng. Raw Javascript benchmarking (benchmark JS thô) all good and well (tốt lành), nhưng không tính đến reality of the Web (thực tế Web).
Nhiều trang dùng lượng code nhỏ tương đối, executed (thực thi) trong vài milliseconds, lâu trước khi user notice (nhận thấy) bất cứ điều gì. Mặt khác, benchmark test mất giây để execute và complete, nhiều lần hơn một page load (tải trang) điển hình. Điều này nghĩa là bất kỳ clear advantage (lợi thế rõ ràng) trình duyệt nào có hơn trình duyệt khác bị diminished (giảm sút). Thứ nhất, hãy bắt đầu với hype (sự thổi phồng).
Một ví dụ vô dụng
Điều này thuộc về installment (kỳ) đầu của tôi về trình duyệt chậm, nhưng tôi không thể refuse (từ chối) temptation (cám dỗ). Pretty much (gần như) mọi would-be browser expert (chuyên gia trình duyệt dự bị) sẽ include (bao gồm) so-called cold and hot starts vào Excel graphs để add depth (thêm chiều sâu) vào seemingly scientific testing (kiểm tra khoa học dường như) trình duyệt của họ. Cold start là bao nhiêu nhanh giao diện trình duyệt mở lần đầu bạn launch (khởi chạy) chương trình sau machine reboot (khởi động lại máy). Hot start là relaunch (khởi chạy lại) trình duyệt lần thứ hai hoặc ba.
Đừng quên bạn cần làm test vài trăm lần trên hệ điều hành và hardware platform khác nhau cho check của bạn có bất kỳ validity (hiệu lực) nào, nhưng ngay cả vậy, cold start nói cho bạn gì? Nó không phải Lada Niva jeep cố gắng khởi động trong mùa đông Siberia. Nó là trình duyệt, phụ thuộc vào trăm background process (tiến trình nền) contesting (cạnh tranh) cho CPU queue (hàng đợi), scheduler (bộ điều độ), priority (ưu tiên), và triệu tham số khác không ai care (quan tâm) khi họ chạy useless tests (test vô dụng).
Cùng với hot starts. Upon closing (khi đóng) hệ điều hành có freed (giải phóng) tất cả page từ memory và kernel buffers? Memory cache và throughput (thông lượng)怎么样? Shared memory (bộ nhớ chia sẻ)呢? Đĩa của bạn đang làm gì lúc này? Nó spinning (quay)? Nhanh bao nhiêu? Và cứ thế. Không có câu hỏi nào được answered (trả lời) trong bất kỳ browser speed benchmark nào và chúng chỉ tệ hơn khi bạn làm việc với browser engine code.
Điều bạn end up (kết thúc) là một bunch (đống) autistic graphs (đồ thị tự kỷ) với số, được taken out of context (lấy ra khỏi ngữ cảnh). Nhưng everyone's an expert (mọi người都是专家). Và sau đó bạn rely on (dựa vào) experts để nói cho bạn gì được coi là fast, dựa trên nhanh their eyes can perceive (mắt có thể nhận thấy) loading web elements trên trang web yêu thích trong trình duyệt yêu thích trên custom-built desktop (máy tự xây) hoặc bargain netbook (netbook rẻ).
Một ví dụ ít vô dụng hơn
Cho sake of argument (lẽ tranh luận), test benchmark Sunspider có thể mất 5 giây complete trong trình duyệt A, 10 giây trong trình duyệt B. Sự khác biệt năm giây là significant (có ý nghĩa). Tuy nhiên, một trang web trung bình mất, nói, một giây load, nửa đó dedicated to (dành cho) Javascript execution. Điều này nghĩa là nếu trình duyệt A mất 0.5 giây thực hiện operation, trình duyệt B sẽ mất 1 giây. Nửa giây noticeable (có thể nhận thấy)? Có lẽ. Nhưng chắc chắn không significant (có ý nghĩa).
Bây giờ, nếu hai trình duyệt differ (khác biệt) 40% (vẫn nhiều). Relative difference (khác biệt tương đối) bây giờ thành 0.2 giây. Đó là khoảng nháy mắt. Đây approx. human response threshold (ngưỡng phản ứng con người), vì vậy bất cứ thứ gì trong khung thời gian đó trông giống nhau cho user. Và chúng ta nói pure engine rendering speed, without any regard to (không quan tâm) tất cả web elements khác, content, v.v.
Bây giờ, nếu bạn so sánh trình duyệt hiện đại, bạn sẽ thấy overall differences (khác biệt tổng thể), here and there (đây đó), large in terms of statistics (về mặt thống kê), nhưng tiny in human terms (nhỏ về mặt con người). Nếu bạn aggregate (tổng hợp) qua vài giờ duyệt web, bạn có thể claim một chút validity cho benchmark, nhưng cho con người, những người appreciate (trân trọng) duyệt web trong instantaneous quantums (lượng tử tức thì), times là negligible (có thể bỏ qua).
Giải thích thêm...
Hơn nữa, chúng ta cũng phải pay attention to (chú ý) làm thế nào extra time (thời gian thêm) trong trình duyệt chậm hơn ảnh hưởng user. Nếu slowness (sự chậm) manifest (biểu hiện) trong loại button (nút) ở dưới trang được load last, không ai sẽ notice. User sẽ bận đọc, xem hình, absorb (hấp thụ) layout và elements trang web. Họ sẽ hardly see (hầu như không thấy) bất kỳ particular element (phần tử cụ thể) nào struggling (đấu tranh) keep up (theo kịp).
Sau đó, khi bạn muốn mở trang mới, bạn làm gì? Vâng, nếu bạn even semi-competent (nửa compentent), bạn sẽ middle-click (nhấp giữa) link of interest (liên kết quan tâm), sẽ mở nó trong tab thứ hai, trong khi giữ focus (tập trung) của cái hiện tại. Bạn sẽ tiếp tục làm bất cứ gì bạn đang làm và cuối cùng switch over (chuyển sang) tab tiếp theo. Mind (tâm trí) bạn won't even acknowledge (thậm chí không công nhận) extra seconds (giây thêm) nó có thể mất trang kia load. Cho all practical purposes (mọi mục đích thực tế), Web browsing là một seamless activity (hoạt động liền mạch).
Cuối cùng, nhiều trang chứa ton sub-optimized code (code chưa tối ưu), code không tuân thủ tiêu chuẩn và thậm chí errors. Nếu bạn chạy validation check (kiểm tra hợp lệ) chống lại popular online resorts (nghỉ dưỡng trực tuyến) của bạn, bạn sẽ amazed (ngạc nhiên) bởi amount (số lượng) errors và warnings (cảnh báo). Nhiều trang web non-compliant (không tuân thủ). Đừng quên browser-specific hacks (hack dành riêng trình duyệt), đáng chú ý nhất IE6 hacks cần thiết để làm trình duyệt cổ hiển thị trang với bất kỳ fidelity (độ trung thực) nào tới original. Tất cả những thứ này add (thêm) significant amount (lượng đáng kể) noise (nhiễu) mà renders precision (làm cho độ chính xác) imprecise (không chính xác).
Benchmarks tốt cho race track (đường đua). Bạn có thể pit (đối đầu) Bugatti Veyron chống McLaren F1 và xem cái nào thắng trên Nurburgring. Nhưng bạn có thể nói cái nào sẽ cross London (qua London) nhanh hơn, lúc 8 giờ sáng thứ Hai?
Nó giống với trình duyệt. Sterile lab tests (test phòng lab vô trùng) sẽ kể một câu chuyện và nó là câu chuyện tốt. Nhưng reality (thực tế) sẽ twist (vặn) câu chuyện thành muddle (hỗn độn). Benchmarks sẽ hold true (giữ đúng) nếu trình duyệt differ by orders of magnitude (khác biệt cấp số nhân), nhưng cho trình duyệt với performance (hiệu suất) tương tự, trong several tens of percents (vài chục phần trăm), end result (kết quả cuối) sẽ pretty much the same (gần như giống nhau). User won't know the difference (người dùng không biết khác biệt).
Lại một lần, ví dụ cá nhân. Firefox, Chrome và Opera (khi tôi dùng), tất cả cho roughly same results (kết quả tương tự). Chrome feels faster and lighter (cảm thấy nhanh và nhẹ), nhưng real life tests của tôi show no clear advantage (không lợi thế rõ ràng). Memory usage differs từ máy này sang máy khác, OS này sang OS khác. Cuối cùng, nó comes down to (tóm lại) taste (sở thích) và habit (thói quen).
Vẫn, tôi can't exactly not feel an urge (cảm giác thôi thúc) blowtorch (đốt cháy) someone whenever they mention browser benchmarks. Bạn can't stay impartial (trung lập) to the beautiful, eloquent (văn từ), and, above all, scientific claims (khẳng định khoa học) như "X browser sucks" (trình duyệt X tệ) và "X browser is faster" (trình duyệt X nhanh hơn) uttered by (phát ra bởi) người có thể, vào một ngày tốt, not get confused tying their shoelaces (buộc dây giày). Nhưng everyone has a PhD in Internetics (tất cả có tiến sĩ Internetics).
Cuối cùng, tại sao benchmark vô nghĩa
Nếu các phần dài và chi tiết trên không satisfy (thỏa mãn) những người skeptical (hoài nghi) hơn trong bạn, thì brace yourselves (cố gắng). Benchmarks vô nghĩa vì chúng first and foremost (đầu tiên và quan trọng nhất) là một publicity stunt (trò PR). Chúng được dùng để tạo illusion of perfection (ảo ảnh hoàn hảo) và take the spotlight away (lấy spotlight đi) từ thứ thực sự quan trọng, như security (bảo mật), privacy (quyền riêng tư), usability (khả năng sử dụng), modularity (tính mô-đun), compatibility (tương thích).
Speed benchmarks làm cho lovely Matrix-like videos và parody (bài nhại) của chúng, benchmarks làm fanboys excited (hào hứng) trong forums, benchmarks làm captivating titles (tiêu đề hấp dẫn) trong bài viết của người không có basic clue (manh mối cơ bản) trong Design of Experiment (thiết kế thí nghiệm), nhưng chúng don't make your life any faster (không làm cuộc sống bạn nhanh hơn).
Software chỉ là một mảnh của trải nghiệm duyệt web. Và chúng ta quên user (người dùng). Người click (nhấp chuột). Con người nghĩ trong giây, nếu không lâu hơn. Milliseconds (h mili giây) difference bạn nhận được từ optimizing (tối ưu) rendering engine đến sadistic perfection (hoàn hảo tàn nhẫn) bị lost on (mất trên) người chỉ muốn nói chuyện với true friends (bạn thật) trên Facebook hoặc đọc bài về celebrity (người nổi tiếng) này nọ.
Hầu hết mọi người không idea (ý tưởng) trình duyệt là gì. Ngay hôm nay, majority (phần lớn) người dùng Windows chạy Internet Explorer, trình duyệt mặc định cung cấp với OS của họ. Cho common user (người dùng phổ thông), Internet là synonymous with (đồng nghĩa với) Internet Explorer. Browser là thứ ăn lá và young shoots (mầm non). Javascript là weird kind of lettering (loại chữ kỳ lạ) dùng trên đảo Java. Benchmark có thể là warning sign (biển báo cảnh báo) trên ghế công viên mới sơn.
Geeks có thể adore (sùng bái) mili giây của họ, nhưng nó makes no difference whatsoever (không tạo ra bất kỳ sự khác biệt nào). Tệ nhất, trình duyệt có thể perfect, nhưng chúng được dùng bởi người, well, average (trung bình). Nếu có gì worse (tệ hơn) cho một sản phẩm perfect cho simpleton (người đơn giản), tôi không thể nghĩ ra gì. Except maybe (trừ có thể) watching reality TV, studying chemistry (hóa học) hoặc dying in a spacecraft accident (chết trong tai nạn tàu vũ trụ).
Nhưng nó là một frenzy (cúm cười), và nó đã caught (bắt được). Một browser vendor (nhà cung cấp) quyết định scream (la hét) ở đỉnh phổi rằng nó có sản phẩm fastest và phần còn lại followed suit (làm theo). Không ai dám stop and think (dừng lại suy nghĩ). Nó too risky (quá rủi ro). Không ai muốn appear old-fashioned (trông lỗi thời) trong would-be modern race (cuộc đua hiện đại giả tưởng).
Bây giờ, mọi website muốn sound posh (nghe sang) và techy viết long big words (dài từ to) về Javascript và whatnot, dùng massively-repeated quotes and numbers (trích dẫn và số lặp lại lớn) để prove (chứng minh) thứ không thể really be proven (thực sự chứng minh). Nó là Hundredth Monkey Effect (Hiệu ứng khỉ thứ trăm). Browser benchmarks đã trở thành holy grail (thánh grail) của browser benchmarking. Nó really makes no difference (thực sự không tạo khác biệt) intention (ý định) ban đầu là gì. Nothing matters (không gì quan trọng). You must have the fastest browser (bạn phải có trình duyệt nhanh nhất), whatever this means (bất kể điều đó nghĩa là gì). Finally ... (cuối cùng) ... if you happen to turn off Javascript (tắt JS) trong trình duyệt, bạn make all these lovely benchmarks meaningless (làm tất cả benchmark đẹp đẽ này vô nghĩa). Nó quay lại text (văn bản), như nó ought to be (nên là). Oh, that's cruel (đó tàn nhẫn).
Tráng miệng
Nhưng nó hardly stops there (hầu như không dừng ở đó). Enter HTML5 and browser codecs. Nếu bạn nghĩ browser benchmarks ngốc nghếch, bạn nên xem điều này là về gì. Nhưng, đó là một story (câu chuyện) khác hoàn toàn. Bài khác, perhaps (có lẽ). Và chúng ta sẽ nói về tabs on top, cũng!
Kết luận
Tôi hy vọng bạn thích bài này. Nhưng bạn có thể không. Bạn convinced (bị thuyết phục), với conviction (niềm tin) của một Spartan (người Sparta) đối mặt Persian hordes (đại quân Ba Tư), rằng trình duyệt của bạn là pinnacle (đỉnh) công nghệ và nó hold the answer (nắm giữ câu trả lời) cho life, the universe and everything (cuộc sống, vũ trụ và mọi thứ). Nhưng nó không. Và Javascript, như một từ, là overrated (được đánh giá quá cao).
Tôi bet you a florin (cược một florin) setup máy của bạn có ít nhất mười variable (biến số) có thể tweak (điều chỉnh) trước khi bạn để trình duyệt breathe at its natural speed (thở ở tốc độ tự nhiên). Nó không phải trình duyệt chậm. Đừng blame (怪罪) trình duyệt. Nó ổn. Trừ có thể Internet Explorer. Phiên bản 9 dường như reasonable (hợp lý), tuy nhiên.
Bất kể, Javascript benchmarking all nice and well, nhưng nó nothing to do with reality (không liên quan thực tế). Cho all practical purposes, bạn có thể có guinea pig (chuột hấp) powering trình duyệt. Stop wasting (lãng phí) thời gian lo lắng và caring về nonsense (vô nghĩa) và focus on (tập trung) important things, như browser W3C compliance (tuân thủ) và stability (ổn định). Bây giờ, bạn đang talking business (nói chuyện công việc).
Chúc vui.