用SIMD和多线程将单词计数速度提高494倍

2025-08-17

本文作者通过编写一系列速度逐渐提升的单词计数程序,展示了优化程序性能的技巧。从Python的字节循环(89.6秒)到使用正则表达式(13.7秒),再到C语言的标量循环(1.205秒),最后利用SIMD指令和多线程技术(181毫秒),最终将单词计数速度提升了近494倍。作者详细解释了每个阶段的优化策略,包括利用CPython的C扩展、编写高效的C循环以及充分利用CPU的多核性能。尽管多线程带来的速度提升不如预期显著,但最终版本仍达到了惊人的5.52 GiB/s的处理速度。

阅读更多
开发

优化 macOS 磁盘使用率程序 dumac 的性能

2025-08-11

dumac 是一个比 `du -sh` 更快的 macOS 磁盘使用率程序,它利用 macOS 特有的系统调用 `getattrlistbulk` 来提升性能。作者通过社区反馈,改进了程序的并行处理方式,将 Tokio 替换为 Rayon,并优化了 inode 哈希集的分片策略,从而显著提升了性能。通过调整 inode 分片策略,减少了锁竞争,最终使得程序的性能提升了约 33%。

阅读更多
开发

程序员用LÖVE框架快速构建游戏原型

2024-12-31

一位程序员为了在2025年完成一个完整的游戏,利用Lua语言的LÖVE2D游戏框架构建了国际象棋和纸牌游戏原型。LÖVE框架简洁强大的API,使得他能够用少量代码实现复杂的UI交互,并通过LLM辅助代码生成,快速迭代原型。作者发现LÖVE适合原型开发,特别是UI方面,但对于大型项目,热重载和代码逻辑分离仍需改进。最终,他计划利用LÖVE框架开发一款简单的游戏MVP。

阅读更多

迷宫生成算法

2024-08-25

本文介绍了三种迷宫生成算法:Aldous Broder 算法、随机深度优先搜索算法和 Wilson 算法。Aldous Broder 算法简单易懂,但效率较低。随机深度优先搜索算法效率较高,但生成的迷宫倾向于有长走廊。Wilson 算法效率和生成效果都比较好,是较为理想的选择。文章还介绍了如何找到迷宫中距离最远的两个点作为起点和终点。

阅读更多
未分类

降低Python代码随机性的方法

2024-07-12

本文介绍了如何通过修改系统调用来降低Python代码的随机性。作者首先解释了Python中随机性的来源,即`os.urandom`和`random.randint`函数,并说明了如何使用`ptrace`系统调用来拦截和修改这些函数的行为。作者提供了一个名为`unrandom`的C程序,该程序可以作为跟踪器附加到Python进程,并在每次调用`getrandom`系统调用时返回零。这将导致`os.urandom`返回全零字节,并使`random.randint`生成确定性的随机数序列。

阅读更多
未分类 ptrace

Lisp 编译器优化

2024-06-01

本文介绍了作者为其 Lisp 编译器添加的一些优化,包括常量折叠与传播、死代码消除等,这些优化可以生成更小、运行速度更快的程序。文章详细介绍了这些优化的实现方法,以及如何通过 AST 变换来优化代码。此外,作者还分享了测试优化效果的经验,并计划在未来添加端到端测试套件。

阅读更多
未分类