This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 1e082af600 Publish built docs triggered by
bc47cbe733dac7f435911b4f4d23ac4308663842
1e082af600 is described below
commit 1e082af6002c2f728b05aeea279ca51b736a4ceb
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Dec 1 15:55:16 2025 +0000
Publish built docs triggered by bc47cbe733dac7f435911b4f4d23ac4308663842
---
_sources/user-guide/crate-configuration.md.txt | 30 ++++++++++++++++++++++++++
searchindex.js | 2 +-
user-guide/crate-configuration.html | 24 +++++++++++++++++++++
3 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/_sources/user-guide/crate-configuration.md.txt
b/_sources/user-guide/crate-configuration.md.txt
index eecf7f5bde..83a46b50c0 100644
--- a/_sources/user-guide/crate-configuration.md.txt
+++ b/_sources/user-guide/crate-configuration.md.txt
@@ -92,6 +92,36 @@ lto = true
codegen-units = 1
```
+### Profile Guided Optimization (PGO)
+
+Profile Guided Optimization can improve DataFusion performance by up to 25%.
It works by compiling with instrumentation, running representative workloads to
collect profile data, then recompiling with optimizations based on that data.
+
+Build with instrumentation:
+
+```shell
+RUSTFLAGS="-C profile-generate=/tmp/pgo-data" cargo build --release
+```
+
+Run your workloads to collect profile data. Use benchmarks like TPCH or
Clickbench, or your actual production queries:
+
+```shell
+./target/release/your-datafusion-app --benchmark
+```
+
+Rebuild using the collected profile:
+
+```shell
+RUSTFLAGS="-C profile-use=/tmp/pgo-data" cargo build --release
+```
+
+Tips:
+
+- Use workloads that match your production patterns
+- Run multiple iterations during profiling for better coverage
+- Combine with LTO and CPU-specific optimizations for best results
+
+See the [Rust compiler
guide](https://rustc-dev-guide.rust-lang.org/building/optimized-build.html#profile-guided-optimization)
for more details. Discussion and results in [issue
#9507](https://github.com/apache/datafusion/issues/9507).
+
### Alternate Allocator: `snmalloc`
You can also use [snmalloc-rs](https://crates.io/crates/snmalloc-rs) crate as
diff --git a/searchindex.js b/searchindex.js
index 07cfd5ce8d..33f5cb1acb 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[60,"op-neq"]],"!~":[[60,"op-re-not-match"]],"!~*":[[60,"op-re-not-match-i"]],"!~~":[[60,"id19"]],"!~~*":[[60,"id20"]],"#":[[60,"op-bit-xor"]],"%":[[60,"op-modulo"]],"&":[[60,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[13,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[60,"op-multiply"]],"+":[[60,"op-plus"]],"-":[[60,"op-minus"]],"/":[[60,"op-divide"]],"<":[[60,"op-lt"]],"<
[...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[60,"op-neq"]],"!~":[[60,"op-re-not-match"]],"!~*":[[60,"op-re-not-match-i"]],"!~~":[[60,"id19"]],"!~~*":[[60,"id20"]],"#":[[60,"op-bit-xor"]],"%":[[60,"op-modulo"]],"&":[[60,"op-bit-and"]],"(relation,
name) tuples in logical fields and logical columns are
unique":[[13,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[60,"op-multiply"]],"+":[[60,"op-plus"]],"-":[[60,"op-minus"]],"/":[[60,"op-divide"]],"<":[[60,"op-lt"]],"<
[...]
\ No newline at end of file
diff --git a/user-guide/crate-configuration.html
b/user-guide/crate-configuration.html
index b0aa78c5d1..8ab8d1b825 100644
--- a/user-guide/crate-configuration.html
+++ b/user-guide/crate-configuration.html
@@ -460,6 +460,29 @@ codegen unit <em>significantly</em> increases <code
class="docutils literal notr
</pre></div>
</div>
</section>
+<section id="profile-guided-optimization-pgo">
+<h3>Profile Guided Optimization (PGO)<a class="headerlink"
href="#profile-guided-optimization-pgo" title="Link to this heading">#</a></h3>
+<p>Profile Guided Optimization can improve DataFusion performance by up to
25%. It works by compiling with instrumentation, running representative
workloads to collect profile data, then recompiling with optimizations based on
that data.</p>
+<p>Build with instrumentation:</p>
+<div class="highlight-shell notranslate"><div
class="highlight"><pre><span></span><span class="nv">RUSTFLAGS</span><span
class="o">=</span><span class="s2">"-C
profile-generate=/tmp/pgo-data"</span><span class="w"> </span>cargo<span
class="w"> </span>build<span class="w"> </span>--release
+</pre></div>
+</div>
+<p>Run your workloads to collect profile data. Use benchmarks like TPCH or
Clickbench, or your actual production queries:</p>
+<div class="highlight-shell notranslate"><div
class="highlight"><pre><span></span>./target/release/your-datafusion-app<span
class="w"> </span>--benchmark
+</pre></div>
+</div>
+<p>Rebuild using the collected profile:</p>
+<div class="highlight-shell notranslate"><div
class="highlight"><pre><span></span><span class="nv">RUSTFLAGS</span><span
class="o">=</span><span class="s2">"-C
profile-use=/tmp/pgo-data"</span><span class="w"> </span>cargo<span
class="w"> </span>build<span class="w"> </span>--release
+</pre></div>
+</div>
+<p>Tips:</p>
+<ul class="simple">
+<li><p>Use workloads that match your production patterns</p></li>
+<li><p>Run multiple iterations during profiling for better coverage</p></li>
+<li><p>Combine with LTO and CPU-specific optimizations for best
results</p></li>
+</ul>
+<p>See the <a class="reference external"
href="https://rustc-dev-guide.rust-lang.org/building/optimized-build.html#profile-guided-optimization">Rust
compiler guide</a> for more details. Discussion and results in <a
class="reference external"
href="https://github.com/apache/datafusion/issues/9507">issue #9507</a>.</p>
+</section>
<section id="alternate-allocator-snmalloc">
<h3>Alternate Allocator: <code class="docutils literal notranslate"><span
class="pre">snmalloc</span></code><a class="headerlink"
href="#alternate-allocator-snmalloc" title="Link to this heading">#</a></h3>
<p>You can also use <a class="reference external"
href="https://crates.io/crates/snmalloc-rs">snmalloc-rs</a> crate as
@@ -625,6 +648,7 @@ backtrace:<span class="w"> </span><span
class="m">0</span>:<span class="w"> <
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#optimizing-builds">Optimizing Builds</a><ul class="nav section-nav
flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#generate-code-with-cpu-specific-instructions">Generate Code with CPU
Specific Instructions</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#enable-link-time-optimization-single-codegen-unit">Enable Link Time
Optimization / Single Codegen Unit</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#profile-guided-optimization-pgo">Profile Guided Optimization
(PGO)</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#alternate-allocator-snmalloc">Alternate Allocator: <code class="docutils
literal notranslate"><span class="pre">snmalloc</span></code></a></li>
</ul>
</li>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]