研究人员以多个高端语言实例用户空间网络驱动程序ixy,发现Rust性能好又安全

研究人员以各种高端开发语言,包括Rust、Go、Java以及C#,为英特尔ixgbe的10 Gbit/s网络接口控制器(NIC)系列,开发了用户空间网络驱动程序ixy,ixy没有依赖性且执行速度快,能让开发者快速地用来构建应用程序。而不同语言实例ixy,则可以被用来比较每种语言的性能。

研究人员在论文中比较3.3 GHz双向转发性能(下图),发现Rust实例虽然处理每个数据封包,比C实例执行还要多63%的指令,但是速度只慢了4%,C的性能表现仍是所有语言之冠,但研究人员提到,背后的原因是Rust应用了边界检查(Bounds Checking),但是C语言没有,另一个原因则是,C在DMA缓冲区不需要包装器对象。

而除了Rust以及C,Go语言也表现良好,特别是垃圾回收器在极重的工作负载下,依然能以低于100微秒的延迟执行(下图)。研究人员也提到,Rust能够用来开发安全的驱动程序,因为Rust使用基于所有权的内存管理,比起使用基于垃圾回收的语言,能够在不影响延迟的情况下,提供更多安全的功能,但是如果应用程序可以忍受因垃圾回收所造成亚毫秒级的延迟,那Go和C#也是用来开发驱动程序的好语言。