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
iPhone Windows Phone Android Windows
on 21 January 2018 - 22:53 #1029568

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

By: McKay
Contributor Android WindowsIn 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
Contributor Windows Phone Android Symbian
on 22 January 2018 - 05:44 #1029580 Reply to:1029579
Nozomi's picture

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

By: McKay
Contributor Android WindowsIn 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
Contributor iPhone Red Hat Ubuntu
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
Contributor Android In Love
on 23 January 2018 - 01:08 #1029783 Reply to:1029574
kajokman's picture

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

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

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

By: mr_tawan
Contributor iPhone Android Windows
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
Android Ubuntu Windows
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
Android Windows
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
Android Windows
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
iPhone Android Red Hat Ubuntu
on 22 January 2018 - 12:54 #1029686

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

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

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

By: ysmdm1
iPhone Android In 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 จนหงุดหงิด