22 คะแนน โดย GN⁺ 2025-05-29 | 7 ความคิดเห็น | แชร์ทาง WhatsApp
  • นักพัฒนาได้เขียน Desktop Docs ซึ่งเดิมเป็นแอป Electron สำหรับ Mac ใหม่ด้วย Rust และสรุปว่านี่คือ การตัดสินใจที่ถูกต้อง
  • แอปเวอร์ชันแรกที่สร้างด้วย Electron มีขนาดใหญ่ถึง 1GB และมีปัญหา ล่มบ่อย จากเรื่องประสิทธิภาพ
    • โดยเฉพาะปัญหา ประสิทธิภาพตกเมื่อประมวลผลภาพ/วิดีโอขนาดใหญ่
  • หลังรีบิลด์ด้วย Rust + Tauri ขนาดแอปลดลง 83% ความเร็วในการทำดัชนีดีขึ้น มากกว่า 3 เท่า และเสถียรภาพก็ดีขึ้น
    • ขนาดแอป: 1GB → 172MB (ลดลง 83%)
    • ไฟล์ติดตั้ง: 232MB → 69.5MB (ลดลง 70%)
    • การทำดัชนีวิดีโอ: วิดีโอความยาว 38 นาที 10~14 นาที → 3 นาที
    • ทำงานเสถียรกว่าแอป Electron ที่เคยไม่เสถียรอย่างมาก
  • กระบวนการรีบิลด์และการเลือกเทคโนโลยี
    • แอป Electron ใช้หน่วยความจำมากกว่า 200MB ไปกับ Chromium เอง แม้ทำงานอยู่เบื้องหลัง และถึงขั้น วิดีโอคอลก็ทำให้แครชได้
    • ในแอปใหม่ยังคงใช้ CLIP embedding และ Redis vector store เหมือนเดิม
    • แต่ได้เขียน pipeline ทั้งหมดสำหรับการประมวลผลภาพ/วิดีโอและ file I/O ใหม่ด้วย Rust
    • ส่วน UI ก็ไม่ได้พอร์ตโค้ดเดิมมา แต่ เขียนใหม่ตั้งแต่ต้น จนได้อินเทอร์เฟซที่ สะอาดตาและเรียบง่าย มากขึ้น
  • ความยากทางเทคนิค
    • Rust มีเส้นโค้งการเรียนรู้สูง และชุมชนของ Tauri ยัง ไม่成熟เท่า Electron
    • ระหว่างการ bundle Redis เข้าไปกับแอป มีปัญหาเรื่อง การจัดการสิทธิ์และการแจกจ่าย
    • ถึงอย่างนั้น เมื่อเทียบกับ Electron ก็ได้ การควบคุมและประสิทธิภาพโดยรวมที่ดีขึ้น
  • บทสรุป
    • แม้ยังไม่เทียบเท่าฟีเจอร์ทั้งหมดแบบสมบูรณ์ แต่ ฟีเจอร์หลักทำงานได้เร็วและเสถียรกว่ามาก
    • โค้ดที่ใช้งานได้ แต่ถูกสร้างมาผิดทาง ควรถูกทิ้งอย่างเด็ดขาด

7 ความคิดเห็น

 
choyunsung79 2025-06-02

Electron ฝัง Chromium มาในตัว ส่วน Tauri ใช้เอนจินที่ติดตั้งอยู่บนระบบปฏิบัติการ จึงมีความแตกต่างกัน

Tauri (OS WebView) ได้เปรียบเมื่อจำเป็นต้องมีแพ็กเกจที่เบาและประสิทธิภาพที่รวดเร็ว แต่
สำหรับบริการที่ความปลอดภัย ความน่าเชื่อถือ และการควบคุมฟีเจอร์เป็นเรื่องสำคัญ แนวทางของ Electron (ฝัง Chromium) เหมาะสมกว่า

ผมอาจจะไม่แน่ใจเรื่องปัญหาในโค้ดนัก แต่คิดว่าลักษณะเฉพาะของแพลตฟอร์มมีผลสะท้อนอยู่มาก

 
bus710 2025-05-30

ถ้าเป็น Flutter, rinf ก็ดีมากเหมือนกันครับ

 
aer0700 2025-05-29

เคยใช้ Electron แล้ว แต่ยังไม่เคยลองใช้ Tauri เลย ไว้ต้องลองใช้ดูสักครั้งนะครับ

 
GN⁺ 2025-05-29
ความคิดเห็นจาก Hacker News
  • ผมกำลังทำเดสก์ท็อปแอปด้วย Rust และ egui แต่เพราะทั้ง Rust และงานพัฒนาเดสก์ท็อปก็เป็นเรื่องใหม่สำหรับผม เลยรู้สึกว่ายากที่ต้องเรียนรู้หลายแนวคิดพร้อมกันในคราวเดียว งานของผมคือเครื่องมือวิเคราะห์ด้านวิศวกรรมเครื่องกล ดังนั้นฝั่งแบ็กเอนด์ต้องการประสิทธิภาพสูง และฝั่งฟรอนต์เอนด์ต้องการการแสดงผลข้อมูล อยากรู้ว่าตอนใช้ Tauri การต้องดูแลหลายสแตกพร้อมกันอย่าง rust, js, html นั้นลำบากไหม

  • ผมเพิ่งมีประสบการณ์ย้ายโปรเจ็กต์จาก Tauri ไป Electron มา ไอ้ความต่างของการเรนเดอร์ใน webview ที่แต่ละแพลตฟอร์มใช้ทำให้ปวดหัวมาก อยากรู้ว่าเคยเจอบั๊ก UI แบบข้ามแพลตฟอร์มไหม ความต้องการด้าน UI ของผมเรียบง่ายแต่การคำนวณซับซ้อน ดังนั้นถึงจะมีต้นทุน QA ผมก็คิดว่ามันยังคุ้มค่า แค่อยากรู้ว่าประสบการณ์ของผมเป็นกรณีพิเศษหรือว่าความต่างของการเรนเดอร์เป็นปัญหาที่เจอกันบ่อยจริง ๆ แล้วก็อยากรู้ว่าใช้ Tauri 1.0 หรือ 2.0 เพราะ 2.0 ออกตัวจริงตอนที่ผมกำลังย้ายจาก v1 พอดี การย้ายเวอร์ชันนั้นฝันร้ายมาก และเอกสารก็น้อยมาก อยากรู้ว่าตอนนี้การทำเอกสารดีขึ้นหรือยัง

    • ที่ kreya.app เราทำ system webview ใช้เองโดยตรงอยู่แล้ว (พูดอีกอย่างคือไม่ใช่ Tauri) และในความเป็นจริงความต่างระหว่างแพลตฟอร์มแทบไม่ใช่ปัญหาเลย ส่วนใหญ่แก้ได้ด้วย polyfill และเราใช้ end to end automation test บน Linux เพื่อหาปัญหาส่วนใหญ่ สิ่งที่ยากที่สุดคือการรู้ว่า webview ของผู้ใช้ล้าหลังแค่ไหน เรื่องนี้หนักบน Linux กับ Mac ส่วน Windows ดีขึ้นมากเพราะมี WebView2
    • อันที่จริงเรายังไม่ได้ปล่อยเวอร์ชัน Tauri แบบข้ามแพลตฟอร์ม เลยคงต้องดูกันต่อไป โชคดีที่ความต้องการด้าน UI ค่อนข้างเรียบง่าย อยากรู้ว่าคุณเจอความต่างด้านการเรนเดอร์อะไรบ้างใน Tauri แล้วในแอปของคุณแพลตฟอร์มไหนทำงานดีที่สุดหรือมีปัญหาที่สุด เราเองก็อยากรองรับ Windows เหมือนกัน ในเวอร์ชัน Electron เรามีปัญหากับการรันไบนารีที่ bundle มาไว้บน Mac ชิป Intel และมันปวดหัวมากจนตอนรีบิลด์ด้วย Tauri เราตัดสินใจโฟกัสที่แพลตฟอร์มเดียวก่อนคือ Mac (Apple chip) ตอนนี้ใช้ Tauri 1.4 และยังไม่เจอปัญหา ส่วนเอกสาร migration ของ 2.0 เดี๋ยวคงต้องไปดูต่อ
    • สำหรับคำถามว่าเคยเจอบั๊ก UI ข้ามแพลตฟอร์มหรือไม่ ก็แน่นอนว่าไม่เกี่ยว เพราะตอนนี้ยังรองรับแค่ Mac ถ้าพยายามรองรับ Windows กับ Linux ด้วย ผมคิดว่าบทความนี้คงไม่มีทางเขียนออกมาได้เลย UI แบบข้ามแพลตฟอร์มนั้นยากมาก และถ้าต้องคงทั้ง UI และชุดฟีเจอร์แบบเดียวกันพร้อมเผื่อเวอร์ชันออนไลน์ด้วยก็ยิ่งยากเข้าไปอีก นั่นจึงเป็นเหตุผลที่ทุกคนย้ายจาก native ไป Qt แล้วก็ไป web stack จากประสบการณ์ของผมที่ทำงานในบริษัทที่พัฒนาเดสก์ท็อปแอปข้ามแพลตฟอร์มสำหรับผู้ใช้หลายล้านคน ผมนึกภาพไม่ออกเลยว่าจะทำแบบอื่นได้ยังไง
    • ตอนที่ผมใช้ Tauri V2 เมื่อราว 6 เดือนก่อน เอกสารเละเทะมาก ตัวโปรเจ็กต์เองดูมีอนาคต แต่การทำให้มันออกมาดีเป็นงานทรมานจริง ๆ เพราะแทบไม่มีอะไรให้อ้างอิง
    • ไม่นานมานี้ Tauri ประกาศข่าวแนวนี้ไว้ว่า ปีนี้จะโชว์เทคโนโลยีใหม่อย่าง webview ที่สร้างบน CEF และ SERVO โดยประกาศใน Discord
  • ผมก็เคยเดินเส้นทางคล้าย ๆ กัน เคยทำ webcam viewer แบบง่ายที่ปรับให้เหมาะกับ USB microscope เพราะหาแอปที่ดีพอไม่ได้เลยต้องทำเอง ผมยัดฟังก์ชันแทบทั้งหมดไว้ใน renderer พอเตรียมส่งขึ้น App Store ก็เริ่มคิดว่า webcam viewer ขนาด 500mb มันใช่เหรอ เลยพอร์ตไป Tauri V2 และลดขนาดลงมาเหลือเกือบ 15mb

    • อยากรู้ความต่างระหว่าง Tauri กับ Electron เท่าที่ผมเข้าใจ ทั้งคู่ใช้เบราว์เซอร์ในการเรนเดอร์ แต่ Electron จะแถมเบราว์เซอร์ทั้งตัวมาด้วย ส่วน Tauri ใช้เบราว์เซอร์ที่มีอยู่แล้วในระบบ
    • ผมว่ามันสุดยอดมาก อยากรู้ว่าเป็นผลิตภัณฑ์อะไร ฝั่งเราก็กำลังเตรียมส่งขึ้น App Store ในสัปดาห์นี้เหมือนกัน
  • ผมชอบแนวคิดของแอปนี้มาก แอปอื่นในหมวดนี้มักอืดและใช้งานไม่สะดวก เลยสนใจการรีไรต์นี้มาก แต่ผมเป็นช่างภาพและสื่อจำนวนมากของผมเป็นฟอร์แมต RAW ซึ่งผมยังไม่แน่ใจว่ารองรับหรือไม่ (หรือถ้าเห็นคำว่า “ทุกฟอร์แมตรูปภาพและวิดีโอหลัก” ที่ไม่ได้พูดถึง RAW ก็คงอาจจะไม่รองรับ) อยากรู้ว่ามีเอกสารทางการ ฟอรัมผู้ใช้ หรือช่องทางอื่นที่เช็กเรื่องรายละเอียดแบบนี้ได้ไหม

  • ผมไม่ได้ใช้ Mac และทีมของเราก็ไม่ได้คิดจะรีไรต์เป็น Rust แต่ผมดีใจมากที่ได้อ่านโพสต์นี้ นี่แหละคือระดับความยาวของบทความใน “Show HN” ที่ผมอยากเห็น: สรุป trade-off ทางเทคนิคที่จำเป็นต่อการแก้ปัญหาในโลกจริงได้พอดี ขอบคุณมาก

    • ดีใจที่ได้แชร์ประสบการณ์ การตัดสินใจรีบิลด์ของที่ใช้งานได้อยู่แล้วไม่ใช่เรื่องง่าย แต่สุดท้ายผมพอใจกับผลลัพธ์มาก
  • คงดีมากถ้ามีข้อมูล benchmark ล่าสุดที่เปรียบเทียบ Tauri, Flutter, Electron, React Native และเฟรมเวิร์กข้ามแพลตฟอร์มสมัยใหม่อื่น ๆ โดยดูจากตัวชี้วัดหลักอย่างขนาด bundle, การใช้หน่วยความจำ (RAM), เวลาเริ่มต้น, การใช้ CPU ภายใต้โหลด และพื้นที่ดิสก์ โดยเฉพาะเฟรมเวิร์กอย่าง Tauri ที่การเรนเดอร์และประสิทธิภาพเปลี่ยนไปตามเวอร์ชันของ webview ก็น่าจะมี compatibility matrix แยกตามแพลตฟอร์ม (เช่น WebView2, WKWebView ฯลฯ) แนบมาด้วย ถ้าสรุปความต่างเหล่านี้เป็นตารางให้เห็นภาพได้ก็น่าจะช่วยให้นักพัฒนาเลือกได้ดีขึ้นมาก

    • มีข้อมูลเปรียบเทียบล่าสุดเมื่อ 2 สัปดาห์ก่อน ดูได้ที่ web-to-desktop-framework-comparison Electron ค่อนข้างแข่งขันได้ในด้าน runtime performance ผมคิดว่าควรสนใจการใช้หน่วยความจำมากกว่าพื้นที่ดิสก์
      • Windows (x64) การใช้หน่วยความจำ (หน้าต่างเดียว, release build):
      1. Electron: ประมาณ 93MB
      2. NodeGui: ประมาณ 116MB
      3. NW.JS: ประมาณ 131MB
      4. Tauri: ประมาณ 154MB
      5. Wails: ประมาณ 163MB
      6. Neutralino: ประมาณ 282MB
      • Mac (arm64):
      1. NodeGui: ประมาณ 84MB
      2. Wails: ประมาณ 85MB
      3. Tauri: ประมาณ 86MB
      4. Neutralino: ประมาณ 109MB
      5. Electron: ประมาณ 121MB
      6. NW.JS: ประมาณ 189MB
      • Linux (x64):
      1. Tauri: ประมาณ 16MB
      2. Electron: ประมาณ 70MB
      3. Wails: ประมาณ 86MB
      4. NodeGui: ประมาณ 109MB
      5. NW.JS: ประมาณ 166MB
      6. Neutralino: ประมาณ 402MB
    • อยากเห็นข้อมูลเปรียบเทียบแบบนี้เพิ่มอีก
  • ที่บริษัทเก่าของผม เราเคยดูแลเดสก์ท็อปแอป Electron สำหรับ Windows และ Mac แอปหนักมาก และการอัปเดตด้วย Squirrel ก็ทรมานสุด ๆ
    สุดท้ายเราเก็บ GUI ไว้เป็นเว็บ SPA (ใช้ Inferno) แล้วแทนส่วนอย่างการโหลด webview ด้วย native app ตัวเล็ก ๆ ของแต่ละแพลตฟอร์ม (C# และ Swift) ผลคือขนาดดาวน์โหลดและการใช้หน่วยความจำลดลงราว 90% และเปลี่ยนไปใช้การแจกจ่าย/อัปเดตผ่าน app store ของแต่ละแพลตฟอร์ม ผมคิดว่านั่นเป็นการตัดสินใจที่ดีที่สุด

    • นี่แทบเป็นครั้งแรกที่ผมเห็นคนชมการแจกจ่าย/อัปเดตผ่าน native app store
      ผมกังวลเรื่องเวลารออนุมัติอัปเดตและความไม่แน่นอน อยากรู้ว่าย้ายจาก Squirrel ไป native แล้วดีขึ้นตรงไหนบ้าง
    • อยากรู้ว่าใช้เวลานานแค่ไหนในการเปลี่ยนผ่าน
  • ถ้าแอปสุดท้ายเป็น Mac แล้ว ทำไมถึงเลือก Rust/Tauri แทน Swift/SwiftUI น่าสนใจมากจริง ๆ

    • ขอบคุณที่ถาม จุดมุ่งหมายของ Desktop Docs คือการเป็น cross-platform เราได้รับคำขอเรื่องรองรับ Windows เยอะมาก เลยตัดสินใจเลือก Rust เพื่อเตรียมพร้อมสำหรับเวอร์ชัน Windows ในอนาคต
    • ผมก็อยากถามเหมือนกัน Swift เป็นภาษาที่ดีมากพอสมควร และผมคิดว่ามันมีข้อดีคล้าย Rust หลายอย่าง ผมก็อยากรู้เรื่องการรวม CLIP ด้วย และเรื่องการพอร์ตก็น่าอ่านมาก
    • ผมก็สงสัยเหมือนกัน ผมกำลังจะทำเดสก์ท็อปแอปเร็ว ๆ นี้ ใช้ Swift มานานแล้ว แต่รู้ Rust แค่นิดหน่อย Tauri ดูน่าสนใจมาก แอป Electron นี่เปิดช้ามากแม้บนพีซีแรง ๆ ขอบคุณสำหรับข้อมูลเชิงลึก
  • อยากรู้ว่าอะไรทำให้เลือก Tauri แทน egui เป็นเพราะประสบการณ์กับ Electron หรือเปล่า ผมเองก็กำลังจะพอร์ตแอป Python Qt ไป Rust แต่ยังกังวลว่าไลบรารี GUI ของ Rust ยังไม่ครบเท่า Qt แล้วสุดท้ายจะไปต่อไม่ได้

    • โดยพื้นฐานแล้ว อะไรคือจุดเริ่มต้นที่ทำให้คุณคิดจะพอร์ตมัน
  • ดูจากปุ่ม "Try" บนหน้าแลนดิ้งเพจ ผู้ใช้คงรู้สึกเหมือนจะมีรุ่นทดลอง แต่ความจริงกลับพาไปสู่การซื้อทันที ถ้ามีทดลองสั้น ๆ สัก 1 สัปดาห์ก็น่าจะดี
    ผมชอบนโยบาย perpetual fallback license นะ ราคา $99 เป็นกำแพงเริ่มต้นที่ค่อนข้างสูง แต่ถ้าเจาะกลุ่มครีเอเตอร์/สตูดิโอก็สมเหตุสมผล ส่วนถ้าเป็นผู้บริโภคทั่วไป ผมคิดว่าราว $20-$25 น่าจะเหมาะ
    ในบทความคุณเน้นเรื่องประสิทธิภาพ แต่บนหน้าแลนดิ้งเพจกลับไม่ได้พูดถึงเลย ข้อมูลอย่าง benchmark ต่าง ๆ งานแบบขนาน หรือข้อกำหนด vram แบบในวิดีโอ 38 นาที ก็สำคัญเหมือนกัน ผมอยากรู้ว่าเวลาใช้กับสื่อระดับหลายร้อยถึงหลายพันชั่วโมงแล้วมันเป็นยังไงจริง ๆ
    ที่งานหนึ่งใช้เวลา 10~14 นาทีบน Electron แล้วเหลือ 3 นาทีบน Tauri นี่น่าทึ่งมาก ทั้งที่ Electron ก็แค่ orchestrate CLIP กับ ffmpeg เอง ผมเลยสงสัยว่า overhead ขนาดนั้นมาจากไหน
    เมื่อก่อนผมก็เคยทำเครื่องมือค้นหาสื่อด้วยการถอดเสียงวิดีโอบน Electron และไม่ได้มีปัญหาด้านประสิทธิภาพมากนัก
    ปกติแล้วคนเลือก Electron หรือ Tauri เพราะต้องการ cross-platform แต่ทำไมถึงเป็น Mac only ตั้งแต่แรกก็สงสัยอยู่เหมือนกัน (โดยเฉพาะถ้าเป็นงานประมวลผลสื่อขนาดใหญ่ที่อาจใช้ nvidia ได้ด้วย)
    ผมเองก็เพิ่งกลับมาใช้ Swift อีกครั้งในรอบ 10 ปี และลังเลระหว่าง Tauri กับ Swift ก่อนจะเลือก Swift สำหรับโปรเจ็กต์ใหม่ แล้วพบว่ามันพัฒนาไปมากเมื่อเทียบกับช่วงปี 2014 จนใช้งานได้สบายมาก
    ถ้าส่วนเรื่อง active user เป็นจริง ก็ดูเหมือนคุณประสบความสำเร็จมาพอสมควรแล้ว อยากรู้ว่าก่อนหน้านี้คุณมีเครือข่ายหรือผู้ชมอยู่แล้วในวงการสตูดิโอ/ครีเอเตอร์หรือไม่ เรื่องการตลาดก็อยากฟังเหมือนกัน

    • ขอบคุณสำหรับฟีดแบ็ก เรื่องรุ่นทดลองเรายังทำไม่ได้ด้วยข้อจำกัดด้านโครงสร้างพื้นฐาน แต่มีแผนจะพิจารณาในอนาคต
      คุณบอกว่าเคยทำเครื่องมือคล้ายกันเอง เลยอยากรู้ว่าทำไมถึงไม่ได้ปล่อยมันออกมา
      ส่วนเวอร์ชัน Windows และ Linux ถ้ามีความต้องการ เรามีแผนจะออกภายในไม่กี่เดือนข้างหน้า
      ผู้ใช้ได้มาจาก HN, การเปิดตัวบน reddit และการโปรโมตเล็กน้อยบน linkedin เป็นหลัก ที่เหลือส่วนมากคือการบอกต่อ
      เรื่อง Electron กับประสิทธิภาพงานประมวลผลวิดีโอ ถ้าจะลงลึกจริง ๆ ยังมีอีกเยอะ ผมเองก็ไม่ใช่ผู้เชี่ยวชาญ Electron เลยคิดว่าอาจเป็นเพราะเราใช้ worker ได้ไม่ดีพอจนเกิดคอขวด
      ตอนย้ายมา Rust เราเพิ่ม scene detection เพื่อลดจำนวนเฟรมที่ต้องนำไปทำดัชนีด้วย จึงลดภาระการประมวลผลลงได้มาก และยังเพิ่มตัวเลือก GPU acceleration ของ ffmpeg ด้วย ทำให้ประสิทธิภาพดีขึ้นพอสมควร การสร้าง image embedding ก็ปรับให้เหมาะด้วยการประมวลผลแบบ batch แต่ถ้าฝืนมากเกินไป model instance ก็อาจแครชได้
 
secret3056 2025-05-29

ในตารางเปรียบเทียบประสิทธิภาพที่ลิงก์ไว้ใน HN ดูเหมือนว่า Electron จะดีกว่า Tauri ในกรณีส่วนใหญ่นะ....

 
majorika 2025-05-29

ผมรู้สึกไม่น้อยว่าข้อความเปรียบเทียบประสิทธิภาพในคอมเมนต์นั้นเป็นการหยิบเฉพาะค่าจากรีโพซิทอรีที่ดูเป็นประโยชน์ต่อ Electron มาใช้ ค่าตัวเลขอาจต่างกันเล็กน้อย แต่ส่วนที่ใกล้เคียงที่สุดน่าจะเป็นการเปรียบเทียบ 'ความต่างของหน่วยความจำว่างก่อนรันกับหลังรัน' อย่างไรก็ตาม ในหัวข้อถัดขึ้นไปทันทีที่วัดผลรวมการใช้หน่วยความจำของเมนโปรเซสและโปรเซสลูกระหว่างที่แอปกำลังทำงาน Electron ถูกบันทึกไว้ที่ 258M ดังนั้นจึงค่อนข้างยากที่จะยอมรับตัวเลขที่บอกว่าการเปลี่ยนแปลงการใช้หน่วยความจำก่อนและหลังรันมีเพียง 91MB นอกจากนี้ ในคอมเมนต์ตอบใน HN ก็มีการพูดถึงด้วยว่าแอปที่สร้างด้วย Tauri ใช้เวลาเริ่มทำงานเกิน 7 วินาที ซึ่งก็ทำให้ยากที่จะเชื่อถือค่าการวัดในรีโพซิทอรีนั้นเช่นกันครับ

 
wfedev 15 일 전

อืม ดูเหมือนว่าปัญหาส่วนใหญ่จะเกิดจากประเด็นของเอนจิน WebView + OS/ไดรเวอร์ มากกว่าความแตกต่างระหว่าง Electron หรือ Tauri นะครับ