ฉันเพิ่งเริ่มใช้ WebAssembly สำหรับบางโครงการของฉัน ฉันทำเช่นนี้เพราะฉันได้ยินมาว่า Wasm เร็วกว่า javaScript
เมื่อฉันเริ่มโครงการ Wasm แรกของฉันฉันรู้ว่าฉันไม่รู้วิธีจัดการ DOM ใน C ++
มีวิธีการทำเช่นนี้โดยใช้ Wasm?
ฉันเพิ่งเริ่มใช้ WebAssembly สำหรับบางโครงการของฉัน ฉันทำเช่นนี้เพราะฉันได้ยินมาว่า Wasm เร็วกว่า javaScript
เมื่อฉันเริ่มโครงการ Wasm แรกของฉันฉันรู้ว่าฉันไม่รู้วิธีจัดการ DOM ใน C ++
มีวิธีการทำเช่นนี้โดยใช้ Wasm?
คำตอบ:
ฉันเพิ่งเริ่มใช้ Web Assembly สำหรับบางโครงการของฉัน ฉันทำเช่นนี้เพราะฉันได้ยินมาว่า wasm เร็วกว่าจาวาสคริปต์
WebAssembly เร็วกว่า JavaScript แต่สำหรับบางกรณีเท่านั้น ด้วย WebAssembly เบราว์เซอร์ของคุณจะต้องทำงานน้อยลงในการดาวน์โหลดและรวบรวมรหัสของคุณทำให้เวลาเริ่มต้นทำงานเร็วขึ้น อย่างไรก็ตามเมื่อประสิทธิภาพการทำงานรันไทม์ของ WebAssembly โดยทั่วไปเร็วกว่า JavaScript เพียง 2 ถึง 3 เท่า ดูบทความต่อไปนี้สำหรับการเปรียบเทียบที่ดีและเป็นประโยชน์:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
อย่างไรก็ตาม WebAssembly ไม่มีการเข้าถึง DOM โดยตรงดังนั้นแม้จะมีประสิทธิภาพที่เหนือกว่าคุณอาจพบว่าช้ากว่า JavaScript สำหรับกรณีการใช้งานของคุณเนื่องจากค่าใช้จ่าย I / O เพิ่มเติม
ด้วยเหตุนี้ในปัจจุบันผู้คนกำลังค้นหาความสำเร็จสูงสุดด้วย WebAssembly สำหรับงานที่ใช้อัลกอริธึม / คำนวณมาก
ฉันรู้ว่าฉันไม่รู้วิธีจัดการ dom ใน c ++ มีวิธีการทำเช่นนี้โดยใช้ตัวต่อ?
ในการจัดการ DOM คุณต้องทำผ่านโฮสต์ JavaScript - โมดูล WebAssembly ของคุณต้องส่งข้อความไปยัง JavaScript เพื่อขอให้จัดการกับ DOM ในนามของ JavaScript
เนื่องจากเป็นความท้าทายที่พบได้ทั่วไปจึงมีโครงการชุมชนหลายแห่งที่มีทางออกให้กับปัญหา ในขณะที่คุณใช้ C ++ สิ่งนี้อาจเป็นที่สนใจของคุณ:
https://github.com/mbasso/asm-dom
ในอนาคตสิ่งนี้จะได้ง่ายขึ้นข้อเสนอเช่นประเภทอินเตอร์เฟสทำให้การประสานงานกับสภาพแวดล้อมของโฮสต์ง่ายขึ้นและอาจอนุญาตให้เรียกใช้เว็บ API โดยตรงจาก WebAssembly
น่าเสียดายที่ DOM สามารถเข้าถึงได้จากเธรด JavaScript หลักของเบราว์เซอร์เท่านั้น โมดูล Service Workers Web Workers และ Web Assembly จะไม่สามารถเข้าถึง DOM การจัดการที่ใกล้เคียงที่สุดที่คุณจะได้รับจาก WASM คือการจัดการออบเจ็กต์สถานะที่ส่งผ่านและสร้างการแสดงผลโดยเธรดหลักที่มีส่วนประกอบ UI ตามสถานะเช่นPreact / React
JSON อนุกรมส่วนใหญ่มักจะใช้ในการส่งรัฐที่มีpostMessage()
หรือช่องออกอากาศ สามารถใช้ Bitpacking หรือวัตถุไบนารีกับTransferrable
ArrayBuffers สำหรับข้อความที่มีประสิทธิภาพมากกว่าซึ่งหลีกเลี่ยงโอเวอร์เฮดของ JSON