<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Rust Performance Book on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/rustPerf/</link><description>Recent content in The Rust Performance Book on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Sep 2026 21:54:25 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/rustPerf/index.xml" rel="self" type="application/rss+xml"/><item><title>1 基准测试</title><link>https://before80.github.io/prgms/Rust/rustPerf/1-benchmarking/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/1-benchmarking/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="benchmarking"&gt;基准测试&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/benchmarking.html"&gt;https://nnethercote.github.io/perf-book/benchmarking.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;基准测试通常涉及比较两个或多个完成相同任务的程序的性能。有时这可能涉及比较两个或多个不同的程序，例如 Firefox 与 Safari 与 Chrome。有时则涉及比较同一程序的不同版本。后一种情况让我们能够可靠地回答「这次改动是否加快了速度？」这一问题。&lt;/p&gt;</description></item><item><title>2 构建配置</title><link>https://before80.github.io/prgms/Rust/rustPerf/2-build-configuration/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/2-build-configuration/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="build-configuration"&gt;构建配置&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/build-configuration.html"&gt;https://nnethercote.github.io/perf-book/build-configuration.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;你可以在不修改代码的情况下，仅通过更改构建配置来大幅改变 Rust 程序的性能。每个 Rust 程序都有许多可能的构建配置。所选配置会影响编译后代码的多种特性，例如编译时间、运行时速度、内存占用、二进制体积、可调试性、可分析性以及编译后的程序可在哪些架构上运行。&lt;/p&gt;</description></item><item><title>3 Lint</title><link>https://before80.github.io/prgms/Rust/rustPerf/3-linting/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/3-linting/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="linting"&gt;Lint&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/linting.html"&gt;https://nnethercote.github.io/perf-book/linting.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/rust-lang/rust-clippy"&gt;Clippy&lt;/a&gt; 是一组用于捕获 Rust 代码中常见错误的 lint。它是运行 Rust 代码的出色工具。它也有助于性能，因为其中许多 lint 与可能导致次优性能的代码模式有关。&lt;/p&gt;</description></item><item><title>4 性能分析</title><link>https://before80.github.io/prgms/Rust/rustPerf/4-profiling/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/4-profiling/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="profiling"&gt;性能分析&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/profiling.html"&gt;https://nnethercote.github.io/perf-book/profiling.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;优化程序时，你还需要一种方法来确定程序的哪些部分是「热点」（执行频率足以影响运行时）且值得修改。最好通过性能分析来完成。&lt;/p&gt;</description></item><item><title>5 内联</title><link>https://before80.github.io/prgms/Rust/rustPerf/5-inlining/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/5-inlining/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="inlining"&gt;内联&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/inlining.html"&gt;https://nnethercote.github.io/perf-book/inlining.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;进入和退出未内联的热点函数，往往会占用相当一部分执行时间。内联这些函数可以消除这些进入和退出，并使编译器能够进行额外的底层优化。在最佳情况下，整体效果虽小，却是容易获得的性能提升。&lt;/p&gt;</description></item><item><title>6 哈希</title><link>https://before80.github.io/prgms/Rust/rustPerf/6-hashing/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/6-hashing/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="hashing"&gt;哈希&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/hashing.html"&gt;https://nnethercote.github.io/perf-book/hashing.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;HashSet&lt;/code&gt; 和 &lt;code&gt;HashMap&lt;/code&gt; 是两种广泛使用的类型，有办法使它们更快。&lt;/p&gt;
&lt;h2 id="替代哈希算法"&gt;替代哈希算法&lt;/h2&gt;
&lt;p&gt;默认哈希算法未作规定，但截至撰写时，默认算法是称为 &lt;a href="https://en.wikipedia.org/wiki/SipHash"&gt;SipHash 1-3&lt;/a&gt; 的算法。该算法质量高——提供强大的防碰撞保护——但相对较慢，尤其是对整数等短键而言。&lt;/p&gt;</description></item><item><title>7 堆分配</title><link>https://before80.github.io/prgms/Rust/rustPerf/7-heap-allocations/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/7-heap-allocations/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="heap-allocations"&gt;堆分配&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/heap-allocations.html"&gt;https://nnethercote.github.io/perf-book/heap-allocations.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;堆分配的开销适中。确切细节取决于使用的分配器，但每次分配（和释放）通常涉及获取全局锁、进行一些非平凡的数据结构操作，并可能执行系统调用。小分配不一定比大分配便宜。值得了解哪些 Rust 数据结构和操作会导致分配，因为避免它们可以大幅改善性能。&lt;/p&gt;</description></item><item><title>8 类型大小</title><link>https://before80.github.io/prgms/Rust/rustPerf/8-type-sizes/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/8-type-sizes/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="type-sizes"&gt;类型大小&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/type-sizes.html"&gt;https://nnethercote.github.io/perf-book/type-sizes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;缩小经常实例化的类型有助于性能。&lt;/p&gt;
&lt;p&gt;例如，如果内存占用较高，像 &lt;a href="https://www.valgrind.org/docs/manual/dh-manual.html"&gt;DHAT&lt;/a&gt; 这样的堆分析器可以识别热点分配点及相关类型。缩小这些类型可以减少峰值内存占用，并可能通过减少内存流量和缓存压力来改善性能。&lt;/p&gt;</description></item><item><title>9 标准库类型</title><link>https://before80.github.io/prgms/Rust/rustPerf/9-standard-library-types/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/9-standard-library-types/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="standard-library-types"&gt;标准库类型&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/standard-library-types.html"&gt;https://nnethercote.github.io/perf-book/standard-library-types.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;值得通读常见标准库类型的文档——例如 &lt;a href="https://doc.rust-lang.org/std/vec/struct.Vec.html"&gt;&lt;code&gt;Vec&lt;/code&gt;&lt;/a&gt;、&lt;a href="https://doc.rust-lang.org/std/option/enum.Option.html"&gt;&lt;code&gt;Option&lt;/code&gt;&lt;/a&gt;、&lt;a href="https://doc.rust-lang.org/std/result/enum.Result.html"&gt;&lt;code&gt;Result&lt;/code&gt;&lt;/a&gt; 以及 &lt;a href="https://doc.rust-lang.org/std/rc/struct.Rc.html"&gt;&lt;code&gt;Rc&lt;/code&gt;&lt;/a&gt;/&lt;a href="https://doc.rust-lang.org/std/sync/struct.Arc.html"&gt;&lt;code&gt;Arc&lt;/code&gt;&lt;/a&gt;——以发现有时能提升性能的实用函数。&lt;/p&gt;
&lt;p&gt;同样值得了解标准库类型的高性能替代方案，例如 &lt;a href="https://doc.rust-lang.org/std/sync/struct.Mutex.html"&gt;&lt;code&gt;Mutex&lt;/code&gt;&lt;/a&gt;、&lt;a href="https://doc.rust-lang.org/std/sync/struct.RwLock.html"&gt;&lt;code&gt;RwLock&lt;/code&gt;&lt;/a&gt;、&lt;a href="https://doc.rust-lang.org/std/sync/struct.Condvar.html"&gt;&lt;code&gt;Condvar&lt;/code&gt;&lt;/a&gt; 和 &lt;a href="https://doc.rust-lang.org/std/sync/struct.Once.html"&gt;&lt;code&gt;Once&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="vec"&gt;&lt;code&gt;Vec&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;创建长度为 &lt;code&gt;n&lt;/code&gt; 的零填充 &lt;code&gt;Vec&lt;/code&gt; 的最佳方式是 &lt;code&gt;vec![0; n]&lt;/code&gt;。这很简单，而且可能比使用 &lt;code&gt;resize&lt;/code&gt;、&lt;code&gt;extend&lt;/code&gt; 或任何涉及 &lt;code&gt;unsafe&lt;/code&gt; 的替代方案&lt;a href="https://github.com/rust-lang/rust/issues/54628"&gt;同样快或更快&lt;/a&gt;，因为它可以利用操作系统协助。&lt;/p&gt;</description></item><item><title>10 迭代器</title><link>https://before80.github.io/prgms/Rust/rustPerf/10-iterators/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/10-iterators/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="iterators"&gt;迭代器&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/iterators.html"&gt;https://nnethercote.github.io/perf-book/iterators.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="collect-和-extend"&gt;&lt;code&gt;collect&lt;/code&gt; 和 &lt;code&gt;extend&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect"&gt;&lt;code&gt;Iterator::collect&lt;/code&gt;&lt;/a&gt; 将迭代器转换为 &lt;code&gt;Vec&lt;/code&gt; 等集合，通常需要分配内存。若集合随后仅被再次迭代，应避免调用 &lt;code&gt;collect&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;因此，函数返回 &lt;code&gt;impl Iterator&amp;lt;Item=T&amp;gt;&lt;/code&gt; 往往比返回 &lt;code&gt;Vec&amp;lt;T&amp;gt;&lt;/code&gt; 更好。注意有时这些返回类型需要额外的生命周期参数，&lt;a href="https://blog.katona.me/2019/12/29/Rust-Lifetimes-and-Iterators/"&gt;这篇博客文章&lt;/a&gt;有说明。
&lt;a href="https://github.com/rust-lang/rust/pull/77990/commits/660d8a6550a126797aa66a417137e39a5639451b"&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>11 边界检查</title><link>https://before80.github.io/prgms/Rust/rustPerf/11-bounds-checks/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/11-bounds-checks/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="bounds-checks"&gt;边界检查&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/bounds-checks.html"&gt;https://nnethercote.github.io/perf-book/bounds-checks.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;默认情况下，Rust 中对切片、向量等容器类型的访问会进行边界检查。这可能影响性能，例如在热点循环中，不过往往没有想象中那么频繁。&lt;/p&gt;</description></item><item><title>12 I/O</title><link>https://before80.github.io/prgms/Rust/rustPerf/12-io/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/12-io/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="io"&gt;I/O&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/io.html"&gt;https://nnethercote.github.io/perf-book/io.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="加锁"&gt;加锁&lt;/h2&gt;
&lt;p&gt;Rust 的 &lt;a href="https://doc.rust-lang.org/std/macro.print.html"&gt;&lt;code&gt;print!&lt;/code&gt;&lt;/a&gt; 和 &lt;a href="https://doc.rust-lang.org/std/macro.println.html"&gt;&lt;code&gt;println!&lt;/code&gt;&lt;/a&gt; 宏在每次调用时都会锁定 stdout。若频繁调用这些宏，手动锁定 stdout 可能更好。&lt;/p&gt;
&lt;p&gt;例如，把下面这段代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# &lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;lines&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#00b1f7"&gt;vec!&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;[&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;one&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#34;two&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#34;three&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;for&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;line&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;in&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;lines&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#00b1f7"&gt;println!&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#98c379"&gt;{}&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;line&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;改成：&lt;/p&gt;</description></item><item><title>13 日志与调试</title><link>https://before80.github.io/prgms/Rust/rustPerf/13-logging-and-debugging/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/13-logging-and-debugging/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="logging-and-debugging"&gt;日志与调试&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/logging-and-debugging.html"&gt;https://nnethercote.github.io/perf-book/logging-and-debugging.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;有时日志代码或调试代码会显著拖慢程序。可能是日志/调试代码本身慢，也可能是为日志/调试收集数据的代码慢。请确保在未启用日志/调试时，不为日志/调试做不必要的工作。
&lt;a href="https://github.com/rust-lang/rust/pull/50246/commits/2e4f66a86f7baa5644d18bb2adc07a8cd1c7409d"&gt;&lt;strong&gt;示例 1&lt;/strong&gt;&lt;/a&gt;，
&lt;a href="https://github.com/rust-lang/rust/pull/75133/commits/eeb4b83289e09956e0dda174047729ca87c709fe"&gt;&lt;strong&gt;示例 2&lt;/strong&gt;&lt;/a&gt;，
&lt;a href="https://github.com/rust-lang/rust/pull/147293/commits/cb0f969b623a7e12a0d8166c9a498e17a8b5a3c4"&gt;&lt;strong&gt;示例 3&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>14 包装类型</title><link>https://before80.github.io/prgms/Rust/rustPerf/14-wrapper-types/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/14-wrapper-types/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="wrapper-types"&gt;包装类型&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/wrapper-types.html"&gt;https://nnethercote.github.io/perf-book/wrapper-types.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 有多种为值提供特殊行为的「包装」类型，例如 &lt;a href="https://doc.rust-lang.org/std/cell/struct.RefCell.html"&gt;&lt;code&gt;RefCell&lt;/code&gt;&lt;/a&gt; 和 &lt;a href="https://doc.rust-lang.org/std/sync/struct.Mutex.html"&gt;&lt;code&gt;Mutex&lt;/code&gt;&lt;/a&gt;。访问这些值可能花费可观时间。若多个此类值通常一起访问，把它们放在同一个包装里可能更好。&lt;/p&gt;
&lt;p&gt;例如，下面这种结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# &lt;span style="color:#76a9f9"&gt;use&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;std&lt;/span&gt;::&lt;span style="color:#aa89ea"&gt;sync&lt;/span&gt;::&lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;Arc&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;Mutex&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;struct&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;S&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#aa89ea"&gt;x&lt;/span&gt;: &lt;span style="color:#ca72ff"&gt;Arc&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;Mutex&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e5c07b"&gt;u32&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#aa89ea"&gt;y&lt;/span&gt;: &lt;span style="color:#ca72ff"&gt;Arc&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;Mutex&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e5c07b"&gt;u32&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可能更适合表示为：&lt;/p&gt;</description></item><item><title>15 机器码</title><link>https://before80.github.io/prgms/Rust/rustPerf/15-machine-code/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/15-machine-code/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="machine-code"&gt;机器码&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/machine-code.html"&gt;https://nnethercote.github.io/perf-book/machine-code.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;当有一小段非常热点的代码时，值得检查生成的机器码是否存在低效之处，例如可消除的&lt;a href="../11-bounds-checks/"&gt;边界检查&lt;/a&gt;。&lt;a href="https://godbolt.org/"&gt;Compiler Explorer&lt;/a&gt; 网站是检查小段代码时的极佳资源。&lt;a href="https://github.com/pacak/cargo-show-asm"&gt;&lt;code&gt;cargo-show-asm&lt;/code&gt;&lt;/a&gt; 是可用于完整 Rust 项目的替代工具。&lt;/p&gt;</description></item><item><title>16 并行</title><link>https://before80.github.io/prgms/Rust/rustPerf/16-parallelism/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/16-parallelism/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="parallelism"&gt;并行&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/parallelism.html"&gt;https://nnethercote.github.io/perf-book/parallelism.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 为安全的并行编程提供了出色支持，可带来显著的性能提升。向程序引入并行有多种方式，对任何程序而言最佳方式都高度依赖其设计。&lt;/p&gt;</description></item><item><title>17 通用技巧</title><link>https://before80.github.io/prgms/Rust/rustPerf/17-general-tips/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/17-general-tips/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="general-tips"&gt;通用技巧&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/general-tips.html"&gt;https://nnethercote.github.io/perf-book/general-tips.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本书前面各节讨论了 Rust 特有的技巧。本节简要概述一些通用的性能原则。&lt;/p&gt;
&lt;p&gt;只要避免明显陷阱（例如&lt;a href="../2-build-configuration/"&gt;使用非 release 构建&lt;/a&gt;），Rust 代码通常既快又省内存，尤其若你习惯 Python、Ruby 等动态类型语言，或 Java、C# 等带垃圾回收的静态类型语言。&lt;/p&gt;</description></item><item><title>18 编译时间</title><link>https://before80.github.io/prgms/Rust/rustPerf/18-compile-times/</link><pubDate>Sun, 23 Aug 2026 13:57:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/rustPerf/18-compile-times/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://nnethercote.github.io/perf-book/"&gt;The Rust Performance Book&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="compile-times"&gt;编译时间&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://nnethercote.github.io/perf-book/compile-times.html"&gt;https://nnethercote.github.io/perf-book/compile-times.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;虽然本书主要关注提升 Rust 程序的运行性能，本节讨论缩短 Rust 程序的编译时间，因为这是许多人关心的相关话题。&lt;/p&gt;
&lt;p&gt;&lt;a href="../2-build-configuration/#minimizing-compile-times"&gt;缩短编译时间&lt;/a&gt;一节讨论了通过构建配置选择来缩短编译时间的方法。本节其余部分讨论需要修改程序代码才能缩短编译时间的方式。&lt;/p&gt;
&lt;p&gt;更多缩短编译时间的技巧，请参阅 Corrode 整理的&lt;a href="https://corrode.dev/blog/tips-for-faster-rust-compile-times/"&gt;加快 Rust 编译时间的技巧&lt;/a&gt; 完整列表。&lt;/p&gt;</description></item></channel></rss>