You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Max Gekk (Jira)" <ji...@apache.org> on 2026/06/23 07:44:00 UTC
[jira] [Resolved] (SPARK-56893) Optimize Parquet dictionary decoding with hasNull fast path and per-class updater overrides
[ https://issues.apache.org/jira/browse/SPARK-56893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Max Gekk resolved SPARK-56893.
------------------------------
Fix Version/s: 4.3.0
Resolution: Fixed
Issue resolved by pull request 55920
[https://github.com/apache/spark/pull/55920]
> Optimize Parquet dictionary decoding with hasNull fast path and per-class updater overrides
> -------------------------------------------------------------------------------------------
>
> Key: SPARK-56893
> URL: https://issues.apache.org/jira/browse/SPARK-56893
> Project: Spark
> Issue Type: Sub-task
> Components: SQL
> Affects Versions: 4.3.0
> Reporter: Ismaël Mejía
> Assignee: Ismaël Mejía
> Priority: Major
> Labels: pull-request-available
> Fix For: 4.3.0
>
>
> Optimize Parquet dictionary decoding with hasNull fast path and per-class updater overrides.
> Two optimizations to ParquetVectorUpdater.decodeDictionaryIds:
> 1. *hasNull() fast path*: A static decodeBatch helper splits decoding into two loops -- when values.hasNull() is false, the per-element isNullAt(i) check is skipped entirely.
> 2. *Per-class decodeDictionaryIds overrides* in six hot-path updaters (IntegerUpdater, IntegerToLongUpdater, LongUpdater, FloatUpdater, FloatToDoubleUpdater, DoubleUpdater): each override gives C2 a monomorphic call site for decodeSingleDictionaryId, enabling full inlining.
> Benchmark results on AMD EPYC 9V74 (baseline vs optimized, same CPU):
> ||Scenario||JDK 17||JDK 21||JDK 25||
> |No nulls|1.21-1.22x|*1.56-1.62x*|1.24-1.25x|
> |10% nulls|~1.0x|1.24-1.29x|~1.0x|
> |50% nulls|~1.0x|1.25-1.26x|~1.0x|
> JDK 21 benefits dramatically across all null fractions due to monomorphic devirtualization. JDK 17/25 benefit primarily in the no-nulls fast path.
> PR: https://github.com/apache/spark/pull/55920
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org