SquirrelFish Extreme
Tagged:  •    •    •    •    •  

JavaScript กลายมาเป็นส่วนสำคัญส่วนหนึ่งของ Web Experience ในปัจจุบันไปเสียแล้ว ด้วยการที่นักพัฒนา Web Application ทั้งหลายทั้งแหล่พยายามสร้าง User Experience ที่ลื่นไหลมากขึ้น ต่อเนื่องมากขึ้น มี Interaction กับผู้ใช้มากขึ้น ฯลฯ ให้กับโปรแกรมบนเว็บของตัวเอง และเทคโนโลยีที่เก่าเก็บอย่าง JavaScript ก็เลยคืนชีพมากลายเป็นพระเอกขี่ม้าขาวช่วยสร้างตรงนี้ให้เกิดขึ้น

แต่ว่ามันไม่ใช่ว่าไม่มีปัญหา ไม่ว่าจะเป็นความหลากหลายของชุดพัฒนา ที่นำมาซึ่งความเข้ากันได้เข้ากันไม่ได้มากมาย และความหลากหลายและความเข้ากันไม่ได้ของ Web Browser เอง ที่ทำให้นักพัฒนาต้องปวดหัวเป็นประจำ ยังมีเรื่องนึงก็คือ ความเร็ว เพราะว่ามักจะอืดเหลือเกิน

พักหลังๆ ในโลกของการพัฒนา Web Application ก็เลยมีเครื่องไม้เครื่องมือมาช่วยในการวัดประสิทธิภาพอยู่หลายตัว แต่ว่าอีกโลกหนึ่ง ฝั่งของ Web Browser และ Web Browser Engine ก็มีการพัฒนาฉากหลัง ที่ช่วยทำให้การทำงานของ JavaScript มันเร็วขึ้น

เมื่อ 3 เดือนก่อน WebKit ทีมได้ประกาศ SquirrelFish ซึ่งเป็น JavaScript Engine ตัวใหม่แกะกล่อง ที่จะช่วยเพิ่มประสิทธิภาพดังกล่าวให้กับการทำงานของ JavaScript ใน Browser ที่ใช้ Engine ของ WebKit (เช่น Safari และอีกหลายๆ ตัว)

มาตอนนี้ Engine ตัวที่ว่าก็เก่าไปซะล่ะ เพราะว่ามีการพัฒนา SquirrelFish Extreme (SFX) ที่เร็วกว่าของเดิมกว่าเท่าตัว (เร็วกว่าตัวที่อยู่ใน WebKit 3.0 กว่า 10 เท่า และ 3.1 กว่า 3 เท่า) อยากรู้ว่าเป็นอย่างไรก็เข้าไปดูใน link นะครับ มี chart ให้เรียบร้อย

ซึ่งทางทีมงานใช้เทคนิคหลักๆ ต่อไปนี้ในการทำให้มันเร็วขึ้น ส่วนคำอธิบายแต่ละเทคนิคผมขอไม่พูดถึงละกัน เพราะว่าเข้าไปอ่านก็ได้รายละเอียดดี แล้วอีกอย่างสำหรับคนที่อยู่ในสายนี้ แค่เห็นชื่อเทคนิคก็คงจะเดากันได้อยู่แล้วว่ามันทำอะไร

  1. Bytecode Optimizations
  2. Polymorphic Inline Cache
  3. Context Threaded JIT
  4. Regular Expression JIT

ซึ่งผมแนะนำว่า ถ้าสนใจลองเข้าไปอ่านที่บทความต้นทางดู

สำหรับผู้สนใจนะครับ ตอนนี้ SFX มีให้ใช้แล้วใน WebKit Nightly Builds เข้าไปแล้วไม่ต้องคิดมากครับ เอา build ล่าสุดมาเล่นได้เลย โดย WebKit จะยังคงใช้ Safari เป็น Browser เหมือนเดิม ต่างกันแค่หลังฉาก (Browser Engine) ครับ ขนาดชื่อโปรแแกรมบนเมนูบาร์ยังเป็น Safari เลย (แต่ว่าต้องเรียกโปรแกรมชื่อ WebKit ขึ้นมาทำงานนะ ไม่ใช่เรียก Safari ... ไอคอนจะสีเข้มกว่ากันหน่อย และขอบทอง)