RAM神话:内存访问的优化策略

2024-12-19

本文揭示了关于现代计算机内存的常见误解——RAM神话,即认为内存访问总是随机且均匀的。作者通过分析数据分片算法,指出对于大量数据,简单的线性算法效率低下,因为其导致频繁的缓存未命中。为解决这个问题,作者提出了基于基数排序的优化策略,通过预排序数据并利用生成器和内存预分配等技巧,显著提高了数据分片的效率。实验结果表明,优化后的算法在处理大数据集时,性能提升可达2.5到9倍。

阅读更多

Rust商标政策仍然有害

2024-11-10

本文作者认为新版Rust商标政策仍然存在诸多限制,对社区和开发者有害。作者列举了几个主要反对意见:新政策对“随意观察者”的措辞模糊,可能导致fork代码库的行为面临风险;对“Rust生态系统”等术语的使用限制过严,影响了日常交流和博客文章;限制“Rust”一词用于其他编程语言,不利于编程语言理论的创新;对免费活动和付费活动的区分过于严格,限制了Rust的教学和推广;禁止使用“RustCamp”、“RustCon”等词语,阻碍了人们对相关活动进行讨论和分享。作者呼吁Rust基金会修改政策,优先保护Rust语言的传承而非自身利益。

阅读更多
未分类

为 Rust 带来更快的异常处理

2024-11-07

本文探讨了如何加快 Rust 的异常处理速度。作者首先分析了 Rust 现有的 panic 机制,指出其性能瓶颈在于类型擦除、间接调用和不必要的堆分配。然后,作者通过一系列优化,例如移除 panic 钩子、直接调用底层函数、避免装箱异常原因以及使用线程局部存储等,将 panic 速度提升了 4.3 倍。最后,作者介绍了 Lithium crate,这是一个实现了高效异常处理的库,并展望了未来对 Itanium 和 SEH 设计的探索。

阅读更多
未分类

我们在 Minecraft 中打造出最棒的 “Bad Apple!!”

2024-10-12

这篇文章详细介绍了作者如何在 Minecraft 游戏中完美还原 “Bad Apple!!” 影像作品的过程。作者克服了 Minecraft 中数据存储方式有限、游戏引擎速度慢、区块更新频繁导致卡顿等难题,通过巧妙运用结构方块、自定义材质包、优化渲染机制、音频同步等技术,最终实现了以 20 帧/秒的速度播放 512×384 分辨率的灰度影像,并配有同步音乐。

阅读更多
未分类 Bad Apple!!

WebP:网页压缩格式

2024-09-07

这篇博客文章探讨了如何通过压缩来减少网站流量并改善页面加载时间。作者指出了GitHub Pages不支持Brotli压缩的缺陷,并提出了一种使用JavaScript在客户端解压缩预压缩数据的解决方案。作者还比较了gzip和Brotli的压缩效率,并推荐使用Brotli以获得更小的文件大小和更快的加载速度。

阅读更多

我将 serde_json 字符串速度提高了 20%

2024-08-24

本文介绍了作者如何优化 Rust 序列化/反序列化框架 serde_json 中字符串处理速度。作者首先通过使用 memchr 库优化错误路径中的行号和列号计算,将速度提高了 2 倍。接着,作者利用 SWAR 技术和查找表优化了字符串解析过程中对转义字符和控制字符的处理,显著提升了长字符串的解析速度。最后,作者通过手动生成 UTF-8 编码,避免了不必要的内存操作,进一步提升了性能。最终,作者在多个字符串密集型 JSON 基准测试中实现了 10% 到 32% 的性能提升。

阅读更多
未分类 serde_json