จริง ๆ แล้ว Electron ก็ไม่ได้แย่อย่างที่คิด
(blog.vaxry.net)- Electron มักถูกเข้าใจผิดว่าเป็นเพียงของที่ช้าและไม่มีประสิทธิภาพ แต่ในความเป็นจริงมันเป็นเครื่องมือที่มีประสิทธิภาพและทรงพลัง
- ปัญหาเรื่อง การใช้ RAM และ ขนาดสตอเรจ เป็นแนวโน้มของแอปสมัยใหม่โดยรวม ไม่ใช่ปัญหาเฉพาะของ Electron
- ในแอปที่ฟีเจอร์บนพื้นฐานของ เทคโนโลยีเว็บ มีความสำคัญ เช่น บริการสตรีมมิง Electron กลับเป็นตัวเลือกที่เป็นธรรมชาติยิ่งกว่า
- มันเหมาะอย่างยิ่งกับ ความเร็วในการพัฒนาที่สูง และ การทำงานเครือข่ายแบบอะซิงโครนัส ทำให้มีผลิตภาพสูงมาก
- ภาพจำว่า Electron ช้านั้น ส่วนใหญ่เกิดจาก แอปคุณภาพต่ำที่บริษัททำออกมา มากกว่า โดยแอป Electron ที่ทำมาดีนั้นเร็วพอและใช้งานได้ดีมาก
อคติต่อ Electron
- Electron ก็เหมือน เบราว์เซอร์ Chromium ที่เปิดหน้าเว็บบนเครื่องโลคัล
- ด้วยเหตุนี้จึงเกิดภาพจำว่ามันช้า ไม่มีประสิทธิภาพ และ "ไม่เนทีฟ" แต่ความจริงแล้วไม่ใช่เช่นนั้น
ประสิทธิภาพ
- ถ้า Electron ไม่มีประสิทธิภาพจริง ตัว เบราว์เซอร์ Chromium เองก็คงทำงานได้ไม่ดี
- Electron เพียงแค่ bundle องค์ประกอบหลายอย่างเข้าด้วยกันเพื่อให้แอปทำงานได้อย่างสมบูรณ์
การใช้ RAM
- คำกล่าวที่ว่า "Electron กิน RAM มาก" ไม่ตรงกับความเป็นจริง
- ผลการวัดจริง
- Vermilion (พื้นฐาน Electron): 215MB
- Dolphin (พื้นฐาน Qt6/KDE): 258MB
- Nautilus (พื้นฐาน GTK4/Libadwaita): 374MB
- แอปสมัยใหม่มีแนวโน้มใช้ RAM มากขึ้นเมื่อมีฟีเจอร์เพิ่มขึ้น และนี่ไม่ใช่ปัญหาเฉพาะของ Electron
ขนาดสตอเรจ
- แอป Electron มีขนาดใหญ่เพราะ bundle dependency จำนวนมากมาด้วยกัน
- โครงสร้างคล้ายกับ Flatpak หรือ AppImage ซึ่งช่วยเพิ่ม ความสามารถในการพกพา และ ความเสถียร
ความเร็ว
- ที่แอป Electron ช้า ไม่ใช่เพราะตัว Electron เอง แต่ส่วนใหญ่เป็นเพราะ แอปที่บริษัทพัฒนาขึ้น ถูกทำมาอย่างลวก ๆ
กรณีที่ Electron กลับดีกว่า
การจัดการ DRM
- บริการสตรีมมิงใช้ DRM ซึ่งต้องอาศัยเทคโนโลยีบนพื้นฐานเว็บ
- ตัวอย่างเช่น Tidal ต้องการ Widevine และในฝั่ง Electron ก็มี ecosystem ที่รองรับการรวมสิ่งนี้เข้าไปได้อย่างง่ายดาย
- ส่วน Spotify ก็สามารถสตรีมได้ตามกฎหมายผ่าน โมดูล JS เท่านั้น
ความเร็วในการพัฒนา
- Typescript และ Electron ช่วยให้ผู้ที่มี ประสบการณ์ด้านเทคโนโลยีเว็บ พัฒนาได้รวดเร็วมาก
- เมื่อเทียบกับเฟรมเวิร์กบนพื้นฐาน GTK หรือ QT แล้ว เทคโนโลยีเว็บ เหนือกว่าอย่างมากในด้านการเข้าถึงและความยากง่ายในการเรียนรู้
การทำงานเครือข่ายแบบอะซิงโครนัส
- ในกรณีที่มีการสื่อสารแบบอะซิงโครนัสบ่อยครั้ง เช่น แอปสตรีมมิง เทคโนโลยีเว็บถูกปรับให้เหมาะกับงานลักษณะนี้อยู่แล้ว
Electron เหมาะกับทุกอย่างหรือไม่?
- ในทางทฤษฎีอาจเป็นไปได้ แต่กับกรณีที่ต้องการใช้ทรัพยากรให้น้อยที่สุด เช่น แอปเดสก์ท็อปแกนหลัก มันไม่เหมาะนัก
- สำหรับแอปที่ซับซ้อน มีฟังก์ชันออนไลน์จำนวนมาก และต้องคำนึงถึงการทำงานข้ามแพลตฟอร์ม Electron เป็นตัวเลือกที่สมเหตุสมผล
- หากมี คุณภาพการพัฒนา เป็นเงื่อนไขตั้งต้น แอป Electron ก็สามารถทำให้ทั้งเร็วและมีประสิทธิภาพได้มากพอ
- ตัวอย่างเช่นแอป Electron อย่าง Obsidian หรือ VS Code มีประสิทธิภาพยอดเยี่ยมมาก
- จากความก้าวหน้าล่าสุดของ WASM หาก offload งานหนักออกไปได้ แอป Electron ก็สามารถแข่งขันกับแอปเดสก์ท็อปแบบดั้งเดิมได้
บทสรุป
- ความไม่พอใจที่มีต่อ Electron ส่วนใหญ่เกิดจาก Electron เวอร์ชันเก่า หรือ แอปคุณภาพต่ำจากบริษัท
- ภาพจำที่ว่า "เป็นหน้าเบราว์เซอร์เลยช้า" นั้นห่างไกลจากความเป็นจริง เพราะเบราว์เซอร์สมัยใหม่มีประสิทธิภาพสูงมาก
16 ความคิดเห็น
ก็เพราะยังไม่เคยเจอโปรเจ็กต์ Electron ที่ทำได้ดีจริง ๆ ไง ~
... เหมือนกำลังจะพูดแบบนั้นเลยนะ 555
ผมเองก็เคยใช้ Electron เมื่อ 2-3 ปีก่อนเหมือนกัน แต่ช่วงนี้ทำด้วย Tauri นะ..
ดีครับ
ใช้ Tauri สิ เป็นแบ็กเอนด์ Rust และรวมเข้าด้วยกันได้ง่ายกว่าที่คิดนะ
มีแต่ข้อกล่าวอ้าง แต่ไม่มีหลักฐานเลยแม้แต่นิดเดียว
ยังไงก็ตาม ก็หมายความว่าประสบการณ์การพัฒนามันดีกว่าพวกอย่าง qt ใช่ไหม?
ประเด็นอื่น ๆ พอเข้าใจได้ แต่ข้ออ้างเกี่ยวกับ RAM นี่ต่างจากประสบการณ์จริงมากเกินไปนะ...
แอปพลิเคชัน Electron ที่ต้องทำงานค้างอยู่เบื้องหลังตลอดเวลานั้นค่อนข้างเป็นภาระอยู่เหมือนกันครับ
ก็ไม่แน่หรอก.. แค่เปิดแอป Electron สัก 3~4 ตัวก็มักจะต้องดิ้นรนเพราะหน่วยความจำไม่พออยู่บ่อยครั้งแล้ว....
พื้นผิวการโจมตีมีเยอะเกินไป แต่กลับไม่ค่อยมีใครสนใจ เลยว่าจะเลิกยุ่งแล้ว
ผมเห็นด้วยว่ามันเป็นเฟรมเวิร์กที่ดีในตัวมันเอง แต่เพราะหลายบริษัทและสตาร์ทอัปอ้างเรื่องประสิทธิภาพการพัฒนาแล้วปล่อยงานออกมาโดยไม่ใส่ใจเรื่องประสิทธิภาพการทำงาน พอได้ยินว่าแอปไหนทำด้วย Electron ก็เลยรู้สึกปฏิเสธไว้ก่อน
ถึงจะใช้โน้ตบุ๊กดี ๆ อยู่ แต่พูดตามตรงก็ไม่ค่อยรู้สึกว่า vscode เร็วนัก สุดท้ายก็มักจะไปใช้ IntelliJ ที่หนักแต่ฟีเจอร์เยอะแล้วใช้งานสะดวก ไม่งั้นก็ใช้ IDE หรือ text editor ที่พัฒนาแบบเนทีฟไปเลย ซึ่งเร็วชัดเจนและประสบการณ์ใช้งานก็ดีกว่า
ดีมากนะ แต่เพราะมันมีขนาดพื้นฐานอยู่ เลยไม่ค่อยเหมาะจะเอาไปใช้ได้ทุกที่..
Electron ดีจะตาย ไม่รู้ว่าใครบอกว่าไม่ดี... ดีมากจริง ๆ
ปัญหาอย่าง Flatpak หรือ AppImage พอกลับมาที่ Windows แล้วก็ดูเหมือนจะเป็นเรื่องที่ไม่เกี่ยวกันเลยนะครับ 555..
ผมคิดว่า Electron เองเป็นเฟรมเวิร์กที่ดีมากเลยครับ การพัฒนาเฟรมเวิร์กก็ยังคึกคัก และที่สำคัญคือทุกอย่างที่น่าจะถูกทำใน Chromium ก็มีครบหมดแล้ว
สิ่งที่ผู้คนเข้าใจผิดเกี่ยวกับ Electron
เปรียบเทียบ Tauri กับ Electron - ประสิทธิภาพ ขนาดบันเดิล และข้อแลกเปลี่ยนจริง