Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

ทำไม Benchmark ความเร็วเบราว์เซอร์ถึงไม่สะท้อนประสิทธิภาพจริง

ผมเคียนเกี่ยวกับความเร็วเบราว์เซอร์มาก่อน เราพูดถึงความเร็วเป็น manifestation ของ components ที่ misconfigured หรือ sub-optimized ใน OS ทำให้ประสบการณ์เล่นเว็บผิดปกติ เราพยายามเข้าใจปัญหาและได้ค่าที่สูญเสียกลับมา

วันนี้เราจะพูดถึงประเภทความเร็วอีกแบบ: browser speed benchmarks ที่ปลายทางอีกข้าง สPOSED บอกว่าผลิตภัณฑ์ที่เลือกเป็นอย่างไร ทำให้เราภูมิใจและมั่นใจในการตัดสินใจ ทดสอบเหล่านี้ไม่เกี่ยวกับ setup ของคุณ เกี่ยวกับสิ่งที่อยู่ภายในเบราว์เซอร์ ทำให้มัน irrelevant เลย มาอธิบาย

เข้าใจเทคโนโลยี

ส่วนใหญ่ไม่รู้ว่า browser speed benchmarks หมายถึงอะไรและส่งผลต่อการใช้งานประจำวันอย่างไร แต่เข้าใจคำว่า fast และ fastest แปลเป็นภาพ supercar ที่วิ้งวอน และเพลิดเพลินกับ arousal ทั่วไป ความจริงต่างออกไป

Browser benchmarks เป็นการแข่งขัน conceptual superiority ระหว่างนักพัฒนา code พยายามเอาชนะกันด้วย browser engine ที่ optimal ที่สุด เกี่ยวกับ single vs multi-threaded processes, mutexing, sandboxing และคำศัพท์ geek อื่นๆ

ความจริงที่ไม่บอก: browser speed tests เกี่ยวข้องกับชีวิตจริงเท่ากับการบริโภคน้ำมันของ Lamborghini LM002 มันคือ glimpse ของเทคโนโลยีใต้ฝาครอบที่ทำได้ในโลกสมบูรณ์โดยไม่มีผู้ใช้ช้า หรือ network congestion น่าเสียดายโลกไม่สมบูรณ์ เรื่องของผมเป็นดังนี้:

เบราว์เซอร์ของคุณ NOT bottleneck

ข้อเท็จจริงง่ายๆ: เบราว์เซอร์เป็นเพียงหนึ่งลูกโซ่ในห่วงโซ่ยาวของอุปกรณ์และซอฟต์แวร์ที่ทำให้อินเทอร์เน็ตทำงาน เบราว์เซอร์เป็น endpoint ของ grid ที่ซับซ้อนมาก multi-layered, multi-tiered

พิมพ์ที่อยู่เว็บที่อยากดู ตัวอักษรแปลงเป็น packets ส่งผ่าน network stack ผ่าน filtering tools, antivirus, firewalls ไป router, modem, ISP switch แล้วอีก 10+ hops ไป web server ที่เก็บหน้านั้น

ทุกองค์ประกอบอาจทำงาน sub-optimal ทำให้ delay น้อยนิด คุณแปลว่า browser experience

Web server อาจ loaded หน้าที่ขออาจใหญ่ มี third-party code บน server อื่น อาจเป็น internet rush hour ISP over-committed กำลังต่อสู้ คุณอาจดาวน์โหลดหนัง ส่งผลต่อผลลัพธ์ สัญญาณไร้สาย หลายคอมพิวเตอร์แบ่งแบนด์วิดท์ อัปเดตซอฟต์แวร์เบื้องหลัง CPU load ทั้งหมดเป็นปัจจัยส่งผลต่อการเล่นเว็บ รวมกันได้ unknown ใหญ่ หลายคนไม่รู้ พวกเขาเห็นและรู้สึกแค่การโหลดหน้าเว็บ

ตัวอย่างส่วนตัว

หลายเดือนก่อน ผมอัปเกรดสาย 1.5 Mbit เป็น 12 Mbit ถามคุณ: ประสบการณ์เล่นเว็บดีขึ้นไหม? คำตอบ: ไม่! ถ้ามีการเปลี่ยนแปลง มัน imperceptible ผมสังเกตการเปลี่ยนแปลง significant และ linear ใน sustained uploads/downloads และ ping ดีขึ้น เล่นเกมออนไลน์สนุกขึ้น แต่ browser space คงเดิม

ทำไม? เรียบง่าย: ประสบการณ์เล่นเว็บของผม optimized แล้วสูงสุด ไม่ขึ้นกับ bandwidth นี่คือสิ่งแรกและสำคัญที่สุด ต้องทำก่อนคิดถึง browser speed

คุณต้อง optimize เครื่องให้ประสิทธิภาพดีที่สุด ต้องแน่ใจว่า bottleneck อยู่นอก scope ควบคุมของคุณ อยากให้ bottleneck อยู่ในลิงก์มากมายนอก perimeter บ้าน สำหรับรายละเอียด browser ช้า อ่านบทความอื่น

สรุป: ถ้าคุณมีสาย 1MB และต้องดาวน์โหลดข้อมูลเว็บ 1MB (ข้อความ รูปภาพ ทุกอย่าง) operation จะไม่ใช้เวลาน้อยกว่า 1 วินาที ไม่ว่าเบราว์เซอร์จะทำอะไร เบราว์เซอร์ทำ magic ไม่ได้

Benchmarking หมายถึงอะไร?

สมมติ setup เครื่องคุณสมบูรณ์ ไม่มี security software ล้มเหลว คุณจึงเริ่มคิดถึง browser speed testing แม้ยังเป็น cauldron of unknowns อยู่ดี จะเปรียบเทียบเบราว์เซอร์ยังไง? โหลดหน้าเว็บใช่ไหม? ถูกต้องในทางหนึ่ง แต่อย่าลืมคุณไม่มี control over ภายนอก

การทดสอบที่แม่นยำที่สุด: เริ่ม web server บนเครื่องตัวเอง รัน test ต่อ localhost ทราบว่าไม่มี external factors ส่งผลต่อ network และลอยไปสู่ browser space สร้าง false impression

อินเทอร์เน็ตคือพายุที่เปลี่ยนแปลงตลอดเวลา แม้โหลดหน้าเว็บในเบราว์เซอร์ต่างๆ ภายในวินาทีจากกัน ยังคงเป็น experiment ภายใต้ circumstances ต่างกัน วิธีเดียวที่ claim accuracy: รัน benchmark หลายร้อยครั้ง ต่อหลายเว็บไซต์ หลายครั้ง ตลอดวัน หลายวันในสัปดาห์ หลายสัปดาห์ ทำสำหรับเบราว์เซอร์ต่างๆ OS ต่างๆ hardware ต่างๆ ISP ต่างๆ network technologies encryption ฯลฯ ไม่มีใครทำ

วัด browser response ไม่ง่ายด้วย สิ่งที่ตาเห็นไม่ใช่สิ่งที่ซอฟต์แวร์เห็น สร้าง perception ของความเร็วด้วย visual transition effects ภายใน browser interface ขณะ rendering จริงเหมือนเดิม ตัวอย่าง perceived vs true slowness: การเปิดแท็บใหม่ใน IE เทียบคู่แข่ง Firefox, Chrome เปิดแท็บ instantaneously (ถ้าไม่ถูก antivirus ทำลาย) IE ใช้ครึ่งวินาที ทำให้ overall effect พัง แม้ content โหลดเร็วต่อมา

นักพัฒนามา up with computational benchmarks ที่ stress rendering engine โดยเฉพาะ JavaScript component คุณเห็นความแตกต่างใหญ่ในทดสอบแบบนี้

แต่ผลลัพธ์ต้องรับด้วยเกลือหนึ่งชิป (และพริกด้วย) Raw JavaScript benchmarking ดีแต่ไม่คำนึงถึงความเป็นจริงของเว็บ

หลายหน้าใช้ code ปริมาณน้อย executed ภายใน milliseconds ก่อน user สังเกต Benchmark tests ใช้ seconds หลายเท่าของ page load ทípical หมายความว่า advantage ที่ชัดเจนของเบราว์เซอร์หนึ่งเหนืออีกตัว ถูกดิมิชิช แรกเริ่มจาก hype

ตัวอย่างไร้ประโยชน์

เกี่ยวกับ installment แรกของ browser slowness แต่ไม่ต้านทานได้ ทุก would-be browser expert จะรวม cold/hot starts เข้า Excel graphs เพื่อเพิ่มความลึกไปกับ scientific testing ที่ดูเหมือนของเบราว์เซอร์ Cold start = ความเร็วที่ browser interface เปิดครั้งแรกหลัง reboot Hot start = relaunch ครั้งที่ 2-3

อย่าลืมต้อง test หลายร้อยครั้งบน OS และ hardware platforms ต่างๆ เพื่อ validity แต่มันบอกอะไร? ไม่ใช่ Lada Niva พยายามเริ่มต้นในฤดูหนาวซิเบเรีย มันคือเบราว์เซอร์ ขึ้นกับ background processes 100+ แย่ง CPU queue, scheduler, priority และพารามิเตอร์ล้านอย่างที่ไม่มีใครสนใจตอน run useless tests

เหมือนกันกับ hot starts ปิดแล้ว OS free pages จาก memory และ kernel buffers ไหม? memory cache และ throughput? shared memory? ดิสก์ทำอะไรอยู่? หมุนไหม? เร็วแค่ไหน? คำถามเหล่านี้ไม่ได้รับคำตอบใน benchmark ไหนเลย และแย่ลงเวลาทำงานกับ browser engine code

สิ่งที่ได้: กราฟ autistic เต็มตัวเลข ถูกนำออกจาก context แต่นักทุกคน ผู้เชี่ยวชาญบอกว่าอะไรเร็ว โดยอิงจากตาที่รับรู้การโหลด web elements บนเว็บโปรด บนเบราว์เซอร์โปรด บน desktop custom-built หรือ netbook ราคาถูก

ตัวอย่างน้อยกว่าไร้ประโยชน์

เพื่อ argument Sunspider benchmark ใช้ 5 วินาทีใน browser A, 10 วินาทีใน B ความต่าง 5 วินาที significant แต่ average web page โหลด 1 วินาที ครึ่งหนึ่งสำหรับ JS execution หมายถึงถ้า A ใช้ 0.5 วินาที B จะใช้ 1 วินาที ครึ่งวินาที noticeable? อาจจะ แต่ไม่ significant

ถ้าแตกต่าง 40% (เยอะอยู่) ความต่าง relative กลายเป็น 0.2 วินาที ประมาณกะพริบตา เกือบ human response threshold ทุกอย่างใน time frame นี้ดูเหมือนกัน สำหรับ user เราพูดถึง pure engine rendering speed ไม่คำนึงถึง web elements อื่นๆ

เปรียบเทียบเบราว์เซอร์สมัยใหม่ ความต่าง overall สถิติใหญ่ แต่เล็กในมุมมองมนุษย์ aggregate หลายชั่วโมงอาจ claim validity ได้ แต่สำหรับมนุษย์ที่ appreciate browsing ใน instantaneous quantums เวลานี้ negligible

อธิบายเพิ่มเติม...

ต้องสนใจว่า extra time ใน slower browser ส่งผลต่อ user อย่างไร ถ้า slowness แสดงในปุ่มท้ายหน้าโหลดท้าย ไม่มีใครสังเกต User กำลังอ่าน ดูรูป ดู layout ไม่ได้ดู element ที่ดูดอยู่

ตอนเปิดหน้าใหม่ ทำไง? ถ้า semi-competent จะ middle-click link ที่สนใจ เปิดในแท็บที่สอง ขณะ focus อยู่ที่แท็บปัจจุบัน ทำต่อไปจน switch tab จิตใจไม่ acknowledge extra seconds ที่อาจใช้โหลดหน้าอื่น สำหรับ practical purposes การเล่นเว็บเป็น seamless activity

หลายหน้ามี sub-optimized code รวมถึง errors run validation check ต่อ popular online resorts คุณจะตกใจกับ errors และ warnings จำนวนมาก หลายเว็บ non-compliant อย่าลืม browser-specific hacks โดยเฉพาะ IE6 hacks ที่จำเป็นทำให้ browser เก่าแสดงหน้าด้วย fidelity ใดๆ ทั้งหมดเพิ่ม noise ทำให้ precision ไม่ precise

Benchmarks ดีสำหรับ race track ปั่น Bugatti Veyron ต่อ McLaren F1 ดูว่าใครชนะ Nurburgring แต่บอกได้ไหมว่าใครข้าม London เร็วกว่า ตอน 8 โมงเช้าวันจันทร์?

เหมือนกันกับเบราว์เซอร์ Sterile lab tests บอก story หนึ่ง เรื่องดี แต่ reality บิด story กลายเป็น muddle Benchmarks จริงถ้าเบราว์เซอร์ต่างกัน orders of magnitude แต่สำหรับเบราว์เซอร์ประสิทธิภาพคล้ายกัน ภายใน several tens of percents ผลลัพธ์เหมือนกัน User ไม่รู้ความต่าง

ตัวอย่างส่วนตัวอีกครั้ง: Firefox, Chrome, Opera (ตอนใช้) ให้ผลลัพธ์คล้ายกัน Chrome รู้สึกเร็วและเบา แต่ real life tests ไม่มี clear advantage Memory usage ต่างกัน machine to machine, OS to OS สุดท้ายลงที่ taste และ habit

ยังคงอยาก blowtorch ใครที่พูดถึง browser benchmarks ไม่สามารถ impartial ได้กับ claims วิทยาศาสตร์ที่ beautiful, eloquent ว่า "X browser sucks" "X browser is faster" จากคนที่อาจสับสนผูกเชือกรองเท้าในวันที่ดี ทุกคนมี PhD ใน Internetics

สุดท้าย ทำไม benchmarks ไร้ความหมาย

ถ้าส่วนข้างต้นไม่พอใจ skeptic บ้าง เตรียมตัว Benchmarks ไร้ความหมายเพราะเป็น publicity stunt ก่อนอื่น สร้าง illusion of perfection ดึง spotlight จากสิ่งที่สำคัญจริง: security, privacy, usability, modularity, compatibility

Speed benchmarks ทำ Matrix-like videos และ parodies ทำ fanboys ตื่นเต้นใน forums ทำ titles น่าสนใจในบทความที่เขียนโดยคนที่ไม่มี basic clue ใน Design of Experiment แต่ไม่ทำให้ชีวิตคุณเร็วขึ้น

Software แค่ชิ้นส่วนของ browsing experience เราลืม user คนที่คลิก คิดเป็นวินาที ถ้านานกว่า milliseconds ของความต่างจาก optimizing rendering engine ถูกสละกับคนที่แค่อยากคุยเพื่อนบน Facebook หรืออ่านบทความเกี่ยวกับ celebrity

ส่วนใหญ่ไม่รู้ browser คืออะไร จนวันนี้ multiple Windows users ใช้ IE default browser สำหรับ common user อินเทอร์เน็ต = IE Browser คือสิ่งกินใบไม้และต้นอ่อน JavaScript คือตัวอักษรแปลกบนเกาะ Java Benchmark คือป้ายเตือนบนม้านั่งสีสด

Geeks อดิเรา milliseconds แต่ไม่ทำความต่างเลย สิ่งแย่ที่สุด: เบราว์เซอร์อาจ perfect แต่ถูกใช้โดยคน average ถ้ามีอะไรแย่กว่าให้ perfect product กับ simpleton ผมคิดไม่ออก ยกเว้นดู reality TV เรียนเคมี หรือตายในอุบัติเหตุยานอวกาศ

แต่มันคือ frenzy ที่จับได้ Vendor หนึ่งตัดสินใจสcream top of lungs ว่ามี fastest product ที่เหลือตามล่า ไม่มีใครหยุดคิด รีsky ไม่มีใครอยากดูเก่าในการแข่งขันสมัยใหม่นี้

ตอนนี้ทุกเว็บที่อยากดู posh และ techy เขียนคำใหญ่ยาวๆ เกี่ยว JavaScript ใช้ quotes และ numbers ซ้ำๆ เพื่อพิสูจน์สิ่งที่พิสูจน์ไม่ได้ Hundredth Monkey Effect Browser benchmarks กลายเป็น holy grail ของ browser benchmarking ไม่สำคัญเจตนาเดิม ไม่มีอะไรสำคัญ คุณต้องมี fastest browser ไม่ว่าจะหมายถึงอะไร สุดท้าย... ถ้าคุณปิด JavaScript ในเบราว์เซอร์ คุณทำให้ benchmarks สวยงามเหล่านี้ meaningless กลับไปเป็น text เหมาะสม นั่นโหดร้าย

ของหวาน

แต่มันไม่หยุด ahí เข้า HTML5 และ browser codecs ถ้าคิดว่า browser benchmarks silly ควรดูเรื่องนี้ แต่เรื่องอื่นทั้งหมด อีกบทความหนึ่ง และเราจะพูดถึง tabs on top อีก!

สรุป

หวังว่าชอบบทความนี้ แต่อาจไม่ชอบ คุณมั่นใจด้วย conviction ของ Spartan หน้าพิราบว่าเบราว์เซอร์ของคุณเป็น pinnacle ของเทคโนโลยี และมีคำตอบของชีวิต จักรวาล และทุกอย่าง แต่ไม่ใช่ JavaScript เป็นคำที่ overrated

ผมเดิมพัน 1 florin ว่า setup คุณมีอย่างน้อย 10 variables ที่ tweak ได้ ก่อนจะให้เบราว์เซอร์หายใจที่ natural speed มันไม่ใช่เบราว์เซอร์ที่ช้า อย่าร怪เบราว์เซอร์ มันดีอยู่แล้ว ยกเว้น IE รุ่น 9 ดูสมเหตุสมผล

อย่างไรก็ตาม JavaScript benchmarking สวยและดี แต่ไม่เกี่ยวกับความเป็นจริง สำหรับ practical purposes คุณอาจให้ guinea pig ขับเคลื่อนเบราว์เซอร์ หยุดเสียเวลากังวลและ care เรื่อง nonsense โฟกัสสิ่งสำคัญ: browser W3C compliance และ stability ตอนนี้คุณพูด business แล้ว

Cheers.