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">&quot;-C 
profile-generate=/tmp/pgo-data&quot;</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">&quot;-C 
profile-use=/tmp/pgo-data&quot;</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]

Reply via email to