Tags:
Node Thumbnail

เราทราบกันดีว่า Firefox 57 เร็วขึ้นกว่าเดิมมาก แต่นั่นเป็นเพียงจุดเริ่มต้นเท่านั้น เพราะ Mozilla มีแผนปรับปรุงเอนจินอีกมาก และใน Firefox 58 ก็มีของใหม่ที่ช่วยให้การประมวลผล JavaScript เร็วขึ้นอีก

ที่ผ่านมา Firefox รองรับ WebAssembly หรือการคอมไฟล์ JavaScript เป็นไบนารีเพื่อให้ได้ประสิทธิภาพดีขึ้นกว่าเดิม ใน Firefox 58 จะปรับปรุงการคอมไพล์ WebAssembly โดยใช้เทคนิค 2 อย่างประกอบกัน

เทคนิคแรกเรียกว่า streaming compilation หรือการเริ่มคอมไพล์โค้ดทันทีที่ไฟล์ของ JavaScript เริ่มถูกส่งเข้ามาผ่านเครือข่าย แม้ไฟล์ยังส่งไม่เสร็จสมบูรณ์ (เพราะ JavaScript มีขนาดใหญ่ขึ้นเรื่อยๆ) แต่ส่วนแรกที่ถูกส่งมายังเบราว์เซอร์ก็ถูกคอมไพล์แล้ว

streaming compilation ยังใช้การประมวลผลแบบหลายเธร็ดเข้าช่วยทำงานขนานกันไป โดยเธร็ดหลักมีหน้าที่รับไฟล์เข้ามา และเธร็ดรองอื่นๆ ช่วยกันคอมไพล์รอไว้ เมื่อเสร็จแล้วเธร็ดหลักก็สามารถรันได้ทันที

รูปแบบการคอมไพล์เดิม ต้องรอกันนาน

No Description

streaming compilation คอมไพล์ทันที + แบ่งงานกันทำ

No Description

เทคนิคที่สองเรียกว่า Tier 2 compiler ตามปกติแล้ว การคอมไพล์ให้ได้ไบนารีที่มีประสิทธิภาพ จำเป็นต้อง optimize โค้ดด้วย ซึ่งก็มีข้อเสียคือเสียเวลา optimize ตอนคอมไพล์

ทางออกของ Mozilla คือการใช้คอมไพเลอร์หลายชั้น (tiered compiler) โดยคอมไพเลอร์ชั้นแรก (Tier 1) จะคอมไพล์โค้ดแบบตรงๆ ไม่ต้อง optimize เพื่อให้ได้ไบนารีมาใช้งานก่อน ส่วนคอมไพเลอร์ชั้นที่สอง (Tier 2) จะคอมไพล์โค้ดนั้นซ้ำ และทำการ optimize โค้ดอยู่เบื้องหลัง เมื่อเสร็จแล้วจะ "สลับ" (hot-swap) ไบนารีเป็นเวอร์ชันใหม่ที่มีประสิทธิภาพดีกว่า

Mozilla บอกว่า คอมไพเลอร์ Tier 1 สามารถคอมไพล์ได้เร็วกว่า Tier 2 ถึง 10-15 เท่า (เพราะไม่ต้อง optimize) แต่ผลลัพธ์ที่ออกมาได้ โค้ดจะช้ากว่าเพียง 2 เท่า ดังนั้นการให้คอมไพเลอร์ Tier 1 ทำงานไปก่อนแล้วค่อยสลับโค้ดจาก Tier 2 มาใช้งาน จึงชดเชยจุดอ่อนของทั้งสองฝั่งได้

No Description

Mozilla ยังระบุว่า ปัจจุบัน Firefox ยังต้องคอมไพล์ JavaScript ทุกครั้งที่รีโหลดหน้าเว็บ แต่ในอนาคต การคอมไพล์จะเกิดขึ้นครั้งแรกเพียงครั้งเดียว และการโหลดหน้าเว็บครั้งต่อๆ ไปจะเรียกใช้ไบนารีจากแคชแทน ประสิทธิภาพที่ได้ก็จะยิ่งเพิ่มขึ้นอีก

ที่มา - Mozilla Hacks

Get latest news from Blognone

Comments

By: Hadakung
iPhoneWindows PhoneAndroidWindows
on 21 January 2018 - 22:53 #1029568

เทคนิคดูเรียบง่าย จนแปลกใจว่าค่ายอื่นเขาไม่ใช่เทคนิคนี้หรอ หรือหมาไฟพึ่งตามมา???

By: McKay
ContributorAndroidWindowsIn Love
on 22 January 2018 - 04:11 #1029579 Reply to:1029568
McKay's picture

[1],[2] ครับ


Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)

By: Nozomi
ContributorWindows PhoneAndroidSymbian
on 22 January 2018 - 05:44 #1029580 Reply to:1029579
Nozomi's picture

ทำมาตั้งแต่ 2014 !!!

By: McKay
ContributorAndroidWindowsIn Love
on 22 January 2018 - 09:00 #1029581 Reply to:1029580
McKay's picture

เข้าใจว่าตอนนั้นยังไม่รองรับ multithread นะครับ ไม่รู้ตอนนี้รองรับหรือยัง

แต่ตอนนี้เป็นยังไงไม่ทราบได้ เพราะ V8 มันเปลี่ยนไปมากครับ

ยกตัวอย่างปี 2010, 2017

edit: มาดูอีกที อันนี้มันเรื่อง WebAssembly แฮะ


Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)

By: itpcc
ContributoriPhoneRed HatUbuntu
on 22 January 2018 - 00:51 #1029574
itpcc's picture

กลัว 2 เรื่อง:
- race conditions
- จะ detect cache ยังไงถ้า code ต้นทางโดนแก้?​


บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P

By: langisser
In Love
on 22 January 2018 - 20:26 #1029757 Reply to:1029574

คงจะให้แก้ปัญหาเฉพาะหน้าไปก่อนโดยการ ctrl+f5
ว่าแต่ feature นี้มันยังไม่ออกนี่ครับ

By: kajokman
ContributorAndroidIn Love
on 23 January 2018 - 01:08 #1029783 Reply to:1029574
kajokman's picture

น่าจะ E-tag and/or Last-Modified

By: sakuraba
Windows PhoneWindows
on 22 January 2018 - 01:29 #1029576
sakuraba's picture

จะกินแรมเพิ่มขึ้นอีกหรือเปล่า
ตอนนี้กินแรมแซงโครมไปแล้วนะเธอ

By: mr_tawan
ContributoriPhoneAndroidWindows
on 22 January 2018 - 11:31 #1029648 Reply to:1029576
mr_tawan's picture

ไม่น่ากินแรมเพิ่มขึ้นมากมายครับ

คือที่ผ่านมา ตอนเปลี่ยนจาก multi-threading มาเป็น multi-processing เนี่ย ข้อมูลบางส่วนมันใช้แชร์กันไม่ได้ (เพราะโอเอสไม่ยอม) ดังนั้นก็เลยต้องมีการโหลดข้อมูลบางส่วนขึ้นมาใหม่ พอรวมกับหน่วยความจำที่โอเอสจองไว้เผื่อให้ด้วย มันเลยบวมเข้าไปใหญ่

(แต่ผู้ใช้ส่วนใหญ่ใช้งานที่แรม 8GB ขึ้นไปกันแล้วคงไม่มีผลกระทบเท่าไหร่)

อันนี้แค่เพิ่มอีก thread นึงสำหรับคอมไพล์สองครั้งพร้อมกัน ไม่น่ากินแรมมากมาย แต่ซีพียูอีกเรื่องนะครับ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: thanyadol
iPhone
on 22 January 2018 - 08:50 #1029590

ผมเพิ่งรุ้นะเนี่ยว่า บราวเซอร์ปัจจุบันมันไปไกลขนาดนี้แล้ว

By: pexza
AndroidUbuntuWindows
on 22 January 2018 - 09:22 #1029591
pexza's picture

สบายใจกะ Firefox เหมือนคนอินดี้ เพราะรอบตัวชอบใช้แต่ Chrome กัน ซึ่งพยายามใช้แล้วไม่เคยถูกจริตเลย

//ตอน Firefox 56 นั้นเลวร้ายมาก ใช้ Ubuntu ที่ใช้แรม 12GB รันบน SSD แทบจะใช้ไม่ได้เลย เลยต้องกล้ำกลืนใช้ Chrome ไปพักใหญ่

By: eak1111 on 22 January 2018 - 09:52 #1029599
eak1111's picture

ถามหน่อยครับตอนนี้รุ่นfirefox version 57 นี่ถือว่าเร็วหรือยังครับ จะได้ลองใช้บ้าง

By: Hoo
AndroidWindows
on 22 January 2018 - 10:55 #1029635 Reply to:1029599

เร็วกว่า 56 มาก
แต่ plugin ที่ผมใช้ตายเรียบ
เลยยังไม่อัพ

ถ้าไม่ติดเรื่อง plugin ผมแนะนำให้อัพเลย

By: eak1111 on 22 January 2018 - 12:39 #1029675 Reply to:1029635
eak1111's picture

ขอบคุณจ้า

By: Configuleto
AndroidWindows
on 22 January 2018 - 12:38 #1029674 Reply to:1029599
Configuleto's picture

เร็วขึ้นมากครับ ผมเปลื่ยนจาก Chrome มาใช้ Firefox เป็นหลักก็เพราะ engine ใหม่นี่ล่ะ

By: eak1111 on 22 January 2018 - 12:40 #1029676 Reply to:1029674
eak1111's picture

ขอบคุณจ้าาา เดี๋ยวจัดเลย

By: sukjai
iPhoneAndroidRed HatUbuntu
on 22 January 2018 - 12:54 #1029686

+1 ใช้เป็นหลักเลย

By: gab
Windows PhoneAndroidWindows
on 22 January 2018 - 14:55 #1029714
gab's picture

ด้วยความเป็น fanboy ...รู้สึกปลื้มปริ่ม

By: ysmdm1
iPhoneAndroidIn Love
on 22 January 2018 - 15:00 #1029717
ysmdm1's picture

กลับมาใช้อีกครั้งตั้งแต่ 57 หลังจากเลิกใช้ไปแล้วก่อนหน้าตอนนี้เลยใช้คูกับโครมไปก่อน

By: HoLY CoMM@nDo on 23 January 2018 - 10:58 #1029721
HoLY CoMM@nDo's picture

ตั้งแต่ใช้ Firefox 57 มา ผมเจอปัญหา Browser ค้างจนคลิกอะไรไม่ได้เลยอยู่บ่อยครั้ง จนต้อง End Process ตลอด ต่อให้ไม่ลง Add-ons ใดๆ ก็ยังมีค้าง คอมพิวเตอร์ที่พบว่าค้าง เป็นคอมพิวเตอร์ที่ใช้ CPU Core 2 Duo, Core i ตัวล่างๆ, Core i Gen แรกๆ ส่วน RAM 4GB-6GB ก็ยังมีค้าง (2GB ไม่ต้องกล่าวก็คงจะรู้ล่ะว่าเดี้ยงแน่นอน)

เดี๋ยวนี้ Browser ไม่ว่าจะเจ้าไหน ก็กิน RAM กินทรัพยากรมากๆ ทั้งนั้้น ไม่มีหรอก กินแรมไม่ถึง 300MB

By: wichate
Android
on 22 January 2018 - 17:21 #1029738

Firefox 57 ที่ทุกคนว่าเร็ว ผมเจอ bug กระจาย ยอมช้าเหมือนเดิมดีกว่ามันยังไม่ดีพอจะ update ตามครับ

By: 7
Android
on 2 February 2018 - 20:49 #1031993
7's picture

ตั้งแต่ 58 มา เจอปัญหากับ FB จนหงุดหงิด