กลุ่มนักวิจัยจากมหาวิทยาลัยในเยอรมนี
ไดรเวอร์เวอร์ชัน Rust นั้นมีประสิทธิภาพใกล้เคียงกับไดรเวอร์อ้างอิงในภาษา C มาก ภายใต้โหลดที่มีการส่งบล็อก 32 แพ็กเก็ตพร้อมกันไดรเวอร์ Rust อยู่ข้างหลังเล็กน้อย แต่ในการทดสอบที่มีมากกว่า 32 แพ็กเก็ตต่อบล็อก ความเร็วแทบไม่แตกต่างจากไดรเวอร์ C และแสดงให้เห็นประสิทธิภาพที่ระดับการประมวลผล 28 ล้าน แพ็คเก็ตต่อวินาทีบนเซิร์ฟเวอร์ที่มี Xeon CPU E3-1230 v2 3.3 GHz
ช่องถัดไปในแง่ของประสิทธิภาพถูกครอบครองโดยไดรเวอร์ในภาษา Go และ C# ซึ่งแสดงผลลัพธ์ที่ค่อนข้างใกล้เคียงกัน (ไดรเวอร์ Go ชนะในการทดสอบด้วยบล็อกมากถึง 16 แพ็กเก็ต และเริ่มสูญเสียเล็กน้อยในการทดสอบที่มีมากกว่า 16 แพ็กเก็ต ในบล็อก) ด้วย 256 แพ็กเก็ตต่อบล็อก ประสิทธิภาพสูงสุดของไดรเวอร์ C# อยู่ที่ประมาณ 28 ล้านแพ็กเก็ตต่อวินาที และไดรเวอร์ Go อยู่ที่ประมาณ 25 ล้านแพ็กเก็ตต่อวินาที
ถัดมาซึ่งผลลัพธ์ค่อนข้างใกล้เคียงกันคือตัวขับเคลื่อนสำหรับ
Java, OCaml และ Haskell ซึ่งล้าหลังตัวเลือกที่พิจารณาก่อนหน้านี้อย่างเห็นได้ชัดและไม่สามารถเอาชนะแพ็กเก็ต 12 ล้านแพ็กเก็ตต่อวินาทีได้ ไดรเวอร์ Swift และ JavaScript แสดงความล่าช้ามากยิ่งขึ้น โดยสามารถประมวลผลสตรีมที่ระดับ 5 ล้านแพ็กเก็ตต่อวินาที
การจัดอันดับสูงสุดเสร็จสิ้นโดยไดรเวอร์ Python ซึ่งสามารถประมวลผลได้เพียง 0.14 ล้านแพ็กเก็ตต่อวินาที การใช้งาน Python ใช้เพื่อประเมินความเร็วของล่ามที่ไม่มี JIT และไม่มีการเพิ่มประสิทธิภาพเฉพาะ (โค้ดถูกดำเนินการโดยใช้ CPython 3.7 และเข้ากันไม่ได้กับ PyPy แต่มีข้อสังเกตว่าการปรับโครงสร้างการจัดเก็บข้อมูลให้เหมาะสมสามารถปรับปรุงประสิทธิภาพได้ประมาณ 10 เท่า ).
นอกจากนี้ ยังมีการทดสอบเวลาแฝงเพื่อแสดงประสิทธิภาพของการบัฟเฟอร์และผลกระทบของตัวรวบรวมขยะ การทดสอบวัดเวลาแฝงหลังจากที่แต่ละแพ็กเก็ตถูกส่งต่อโดยไดรเวอร์ เปรียบเทียบกับเวลาที่แน่นอนที่ถูกส่ง ผู้นำยังคงเป็นไดรเวอร์ C และ Rust ซึ่งผลลัพธ์แทบจะแยกไม่ออกจากกระแส 1 ล้านแพ็กเก็ตต่อวินาที (ประมาณ 20 µs) นักขับ Go ทำงานได้ดี โดยตามหลังผู้นำเพียงเล็กน้อยและยังคงอยู่ที่ระดับ 20 µs ไดรเวอร์ C# แสดงความล่าช้าประมาณ 50 µs
ความล่าช้าที่ยาวที่สุดแสดงโดยไดรเวอร์ JavaScript และ Java (เวลาแฝงมากกว่า 300 µs)
การศึกษานี้ดำเนินการเพื่อประเมินความเป็นไปได้ในการพัฒนาไดรเวอร์และส่วนประกอบระบบปฏิบัติการในภาษาระดับที่สูงกว่า C ปัจจุบัน ปัญหาหน่วยความจำ 39 จาก 40 รายการใน Linux เกี่ยวข้องกับไดรเวอร์ ดังนั้นปัญหาในการใช้ภาษาที่ปลอดภัยยิ่งขึ้นและการย้ายไดรเวอร์ออกจากเคอร์เนลไปยังพื้นที่ผู้ใช้
ในระหว่างการทำงาน สรุปได้ว่าภาษา Rust เป็นตัวเลือกที่ดีที่สุดสำหรับการพัฒนาไดรเวอร์ ความสามารถของ Rust ขจัดปัญหาที่เกี่ยวข้องกับการจัดการหน่วยความจำระดับต่ำโดยสูญเสียประสิทธิภาพประมาณ 2% ถึง 10% เมื่อเทียบกับไดรเวอร์ C Go และ C# ยังถือว่าเหมาะสำหรับการสร้างส่วนประกอบของระบบในสถานการณ์ที่ยอมรับความหน่วงต่ำกว่ามิลลิวินาทีที่เกิดจากการรวบรวมขยะได้
ที่มา: opennet.ru