Rust AV1解码器性能优化:避免不必要的内存清零和优化结构体比较

2025-05-22
Rust AV1解码器性能优化:避免不必要的内存清零和优化结构体比较

作者通过比较Rust编写的AV1解码器rav1d和C编写的dav1d的性能,利用采样分析器找到了两个性能瓶颈。第一个是rav1d在Arm架构下不必要地清零了一个缓冲区,导致性能下降。第二个是rav1d中结构体比较的低效实现。通过使用`MaybeUninit`避免不必要的内存清零和优化结构体比较,作者将rav1d的性能提升了近2%。

阅读更多
开发

Rust借鉴Python动态能力:Serde库实现反射

2025-05-15
Rust借鉴Python动态能力:Serde库实现反射

本文讲述了作者如何使用Rust和Serde库,模仿Python的动态属性访问(__getattr__)机制,创建一个简洁易用的API来访问系统信息。文章详细解释了实现过程,包括自定义Trait、Deserializer和Visitor的实现,以及如何利用Serde的derive(Deserialize)特性简化代码。最终,作者成功构建了一个高效且用户友好的Rust库,实现了类似Python的简洁API,并讨论了其他替代方案和权衡。

阅读更多
开发

Python生产代码中令人抓狂的__init__方法

2025-04-19
Python生产代码中令人抓狂的__init__方法

一个Python服务测试偶尔会失败,原因出在一个疯狂的__init__方法上。FooBarWidget类在其__init__方法中,启动一个新线程来执行父类FooWidget的__init__方法和run方法。由于zmq.Socket对象不能跨线程移动,这种设计试图避免阻塞主线程。然而,如果过早关闭FooBarWidget实例,FooWidget的__init__可能未完成,导致'should_exit'属性缺失,引发错误。这篇文章以幽默的笔触讲述了这段令人头疼的调试经历,并探讨了这种反常设计的动机。

阅读更多
开发 __init__