Facebook เปิดตัวซอร์สโค้ดของเอนจิ้น Hermes JavaScript

Hermes

Facebook ได้เปิดซอร์สโค้ดสำหรับเอนจิ้น Hermes JavaScript ที่มีน้ำหนักเบา ปรับให้เหมาะสมเพื่อเรียกใช้แอปพลิเคชันที่ใช้ React Native framework บนแพลตฟอร์ม Android

วิศวกรซอฟต์แวร์ของ Facebook Marc Horowitz เปิดเผยเครื่องมือ JavaScript ใหม่ในการประชุม Chain React ปี 2019 ที่พอร์ตแลนด์รัฐโอเรกอน. Hermes เป็นเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ตัวใหม่ที่มุ่งเน้นไปที่การปรับปรุงประสิทธิภาพการเริ่มต้นแอพในลักษณะเดียวกับที่ Facebook ทำกับแอพอยู่แล้วและทำให้แอพมีประสิทธิภาพมากขึ้นบนสมาร์ทโฟนระดับเริ่มต้น

เกี่ยวกับ Hermes

การสนับสนุน Hermes มีอยู่ใน React Native ณ เวอร์ชันปัจจุบัน 0.60.2 โครงการนี้ได้รับการยอมรับในการแก้ปัญหาเกี่ยวกับเวลาเริ่มต้นที่ยาวนานสำหรับแอปพลิเคชัน JavaScript ดั้งเดิมและการใช้ทรัพยากรจำนวนมาก รหัสนี้เขียนด้วยภาษา C ++ และเผยแพร่ภายใต้ใบอนุญาต MIT

ข้อดีของการใช้ Hermes คือการลดเวลาเริ่มต้นของแอปพลิเคชันการใช้หน่วยความจำลดลงและขนาดของแอปพลิเคชันลดลง

การเร่งความเร็วของแอปพลิเคชัน เปิด ทำได้โดยใช้ precompilation ใน bytecode กะทัดรัดและมีประสิทธิภาพในขั้นตอนการรวบรวม

ในการรันแอ็พพลิเคชันโดยตรงเครื่องเสมือนถูกใช้กับตัวรวบรวมขยะ SemiSpace ที่พัฒนาขึ้นเป็นส่วนหนึ่งของโปรเจ็กต์ ด้วย V8 ขั้นตอนที่ยาวที่สุดคือขั้นตอนในการแยกวิเคราะห์ซอร์สโค้ดและรวบรวมได้ทันที

เอ็นจิ้น Hermes นำขั้นตอนเหล่านี้ไปสู่ขั้นตอนการรวบรวมและอนุญาตให้ส่งแอปพลิเคชันในรูปแบบของรหัสไบต์ที่ปรับให้เหมาะสม

การประมวลผล JavaScript แบ่งออกเป็นหลายขั้นตอน ในขั้นต้นซอร์สโค้ดจะถูกแยกวิเคราะห์และการแสดงรหัสกลาง (Hermes IR) จะถูกสร้างขึ้นโดยอิงจากการแสดง SSA (การกำหนดเฉพาะแบบคงที่)

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

สุดท้ายในขั้นตอนสุดท้ายรหัสไบต์สำหรับเครื่องเสมือนที่ลงทะเบียนจะถูกสร้างขึ้น

ในการสาธิต Marc Horowitz แสดงให้เห็นว่าแอปพลิเคชัน React Native กับ Hermes มันโหลดเต็มที่เร็วกว่าแอพพลิเคชั่นเดียวกันที่โหลดโดยไม่ใช้ Hermes ประมาณสองวินาที

Marc Horowitz ทำให้แน่ใจว่า Hermes ลดขนาดของ APK ตรงกลาง 41MB ของแอป React Native ที่เก็บไว้และกำจัดการใช้หน่วยความจำของแอปไปหนึ่งในสี่

กล่าวอีกนัยหนึ่งด้วย Hermes นักพัฒนาสามารถให้ผู้ใช้โต้ตอบกับแอปพลิเคชันได้เร็วขึ้นโดยมีอุปสรรคน้อยลงเช่นเวลาในการดาวน์โหลดที่ช้าและข้อ จำกัด ที่เกิดจากแอปพลิเคชันหลายตัวที่ใช้ทรัพยากรหน่วยความจำที่ จำกัด เช่น: โดยเฉพาะอย่างยิ่งในการป้อนข้อมูลในโทรศัพท์ระดับ

เอ็นจิ้นสนับสนุนส่วนหนึ่งของมาตรฐาน ECMAScript 2015 JavaScript (การสนับสนุนเต็มรูปแบบคือเป้าหมายสุดท้าย) และเข้ากันได้กับแอปพลิเคชัน React Native ที่มีอยู่ส่วนใหญ่ ใน Hermes มีการตัดสินใจที่จะไม่สนับสนุนการส่งแบบ local ของ eval (), "with" expression, reflections (Reflect และ Proxy), Intl API API และแฟล็กบางตัวใน RegExp

หากต้องการเปิดใช้งาน Hermes ในแอปพลิเคชัน React Native เพียงเพิ่มตัวเลือก "enableHermes: true" ให้กับโปรเจ็กต์ นอกจากนี้ยังสามารถรวบรวม Hermes ในโหมดอินเทอร์เฟซ CLI ซึ่งช่วยให้คุณสามารถเรียกใช้ไฟล์ JavaScript โดยพลการจากบรรทัดคำสั่ง

ในเวลาเดียวกัน Facebook ไม่ได้วางแผนที่จะปรับ Hermes สำหรับ Node.js และโซลูชันอื่น ๆ โดยมุ่งเน้นไปที่แอปพลิเคชันบนมือถือเท่านั้น (การรวบรวม AOT แทน JIT นั้นเหมาะสมกว่าในบริบทของแอพมือถือที่ใช้ React Native)

Microsoft ทำการทดสอบประสิทธิภาพเบื้องต้นและแสดงให้เห็นว่าเมื่อใช้ Hermes แอปพลิเคชัน Microsoft Office สำหรับ Android จะทำงานได้ใน 1.1 วินาที

หลังจากเปิดตัวและใช้ RAM 21.5MB ในขณะที่ใช้เครื่องยนต์ V8 จะใช้เวลา 1.4 วินาทีในการเปิดตัวและใช้หน่วยความจำ 30MB


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา