You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by "neilconway (via GitHub)" <gi...@apache.org> on 2026/09/05 14:20:08 UTC

[PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

neilconway opened a new pull request, #10998:
URL: https://github.com/apache/arrow-rs/pull/10998

   # Which issue does this PR close?
   
   - N/A
   
   # Rationale for this change
   
   `parse_decimal` validated the parsed value against the precision with `is_valid_decimal_precision`, an out-of-line call that loads the bounds for the precision and compares the value against both.
   
   The parser already knows how many digits it kept. We can modify the mantissa scan to return the digit count and then use this count to skip the precision check for the common case that the number of parsed digits implies the parsed value is well within the allowed precision.
   
   `parse_decimal` microbenchmark, Apple M4 Max, µs per 1024 inputs:
   
   ```
       case                                 before   after   change
       123.123                                7.93    7.85    -1.0%
       123.1234                              11.39   10.96    -3.7%
       123.1                                 11.22   10.27    -8.5%
       123                                   10.49    9.47    -9.7%
       -123.123                               8.16    8.07    -1.0%
       -123.1234                             11.47   11.09    -3.3%
       -123.1                                11.45   10.53    -8.0%
       -123                                  10.71    9.84    -8.1%
       0.0000123                              8.37    7.89    -5.7%
       12.                                   10.21    9.54    -6.5%
       -12.                                  10.44    9.76    -6.5%
       00.1                                  10.69    9.90    -7.4%
       -00.1                                 10.93   10.00    -8.5%
       12345678912345678.1234                24.49   24.53    +0.1%
       -12345678912345678.1234               24.67   24.77    +0.4%
       99999999999999999.999                 20.31   19.90    -2.0%
       -99999999999999999.999                20.25   20.40    +0.7%
       .123                                   6.34    6.18    -2.6%
       -.123                                  6.59    6.41    -2.7%
       123.                                  10.67   10.12    -5.1%
       -123.                                 10.94   10.30    -5.8%
       string decimal128 short                8.20    7.85    -4.2%
       string decimal128 integer             11.19   10.89    -2.7%
       string decimal128 exact scale         11.43   11.05    -3.3%
       string decimal128 padded scale        10.50   10.42    -0.8%
       string decimal128 rounded scale       15.23   14.63    -3.9%
       string decimal128 signed              15.28   14.78    -3.3%
       string decimal128 38 digits           24.19   23.65    -2.2%
       string decimal128 exponent            20.28   20.18    -0.5%
       string decimal128 negative exponent   19.52   18.79    -3.7%
       string decimal128 negative scale      18.32   17.97    -1.9%
       string decimal128 long fraction       22.39   22.14    -1.1%
       string decimal256 76 digits           59.03   57.76    -2.1%
       string decimal256 rounded scale       55.72   54.71    -1.8%
       string decimal32 short                 8.51    7.74    -9.1%
       string decimal32 9 digits             10.45    9.76    -6.6%
       string decimal64 short                 7.29    6.84    -6.2%
       string decimal64 18 digits            12.04   11.66    -3.2%
   ```
   
   # What changes are included in this PR?
   
   See above.
   
   # Are these changes tested?
   
   Yes; new test added, existing tests pass.
   
   # Are there any user-facing changes?
   
   No.
   
   # AI usage
   
   Developed with Claude Code Fable 5.1; reviewed with Codex Astra 6. I reviewed, revised, and understand the resulting code.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556211310

   🤖 Arrow criterion benchmark running (GKE) | [trigger](https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556196831)
   **Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c5556196831-2142-fmq8b 6.12.94+ #1 SMP Fri Jul 17 09:42:57 UTC 2026 aarch64 GNU/Linux`
   <details><summary>CPU Details (lscpu)</summary>
   
   ```
   Architecture:                            aarch64
   CPU op-mode(s):                          64-bit
   Byte Order:                              Little Endian
   CPU(s):                                  16
   On-line CPU(s) list:                     0-15
   Vendor ID:                               ARM
   Model name:                              Neoverse-V2
   Model:                                   1
   Thread(s) per core:                      1
   Core(s) per cluster:                     16
   Socket(s):                               -
   Cluster(s):                              1
   Stepping:                                r0p1
   BogoMIPS:                                2000.00
   Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
   L1d cache:                               1 MiB (16 instances)
   L1i cache:                               1 MiB (16 instances)
   L2 cache:                                32 MiB (16 instances)
   L3 cache:                                80 MiB (1 instance)
   NUMA node(s):                            1
   NUMA node0 CPU(s):                       0-15
   Vulnerability Gather data sampling:      Not affected
   Vulnerability Indirect target selection: Not affected
   Vulnerability Itlb multihit:             Not affected
   Vulnerability L1tf:                      Not affected
   Vulnerability Mds:                       Not affected
   Vulnerability Meltdown:                  Not affected
   Vulnerability Mmio stale data:           Not affected
   Vulnerability Reg file data sampling:    Not affected
   Vulnerability Retbleed:                  Not affected
   Vulnerability Spec rstack overflow:      Not affected
   Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
   Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
   Vulnerability Spectre v2:                Mitigation; CSV2, BHB
   Vulnerability Srbds:                     Not affected
   Vulnerability Tsa:                       Not affected
   Vulnerability Tsx async abort:           Not affected
   Vulnerability Vmscape:                   Not affected
   ```
   
   </details>
   
   Comparing neilc/decimal-parser-precision-by-digits (dcc0266ea46bed33d44a570da85e40e894e46d60) to b1aa94b (merge-base) [diff](https://github.com/apache/arrow-rs/compare/b1aa94b05c88ef4cc6d0293d784bbc254537e942..dcc0266ea46bed33d44a570da85e40e894e46d60)
   
   <details><summary>Run configuration</summary>
   
   ```yaml
   run benchmark parse_decimal
   ```
   
   </details>
   
   BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench parse_decimal
   Results will be posted here when complete
   
   ---
   [File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5552642929

   🤖 Arrow criterion benchmark running (GKE) | [trigger](https://github.com/apache/arrow-rs/pull/10998#issuecomment-5552627943)
   **Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB) | `Linux bench-c5552627943-2139-dkbqm 6.12.94+ #1 SMP Fri Jul 17 09:42:57 UTC 2026 aarch64 GNU/Linux`
   <details><summary>CPU Details (lscpu)</summary>
   
   ```
   Architecture:                            aarch64
   CPU op-mode(s):                          64-bit
   Byte Order:                              Little Endian
   CPU(s):                                  16
   On-line CPU(s) list:                     0-15
   Vendor ID:                               ARM
   Model name:                              Neoverse-V2
   Model:                                   1
   Thread(s) per core:                      1
   Core(s) per cluster:                     16
   Socket(s):                               -
   Cluster(s):                              1
   Stepping:                                r0p1
   BogoMIPS:                                2000.00
   Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
   L1d cache:                               1 MiB (16 instances)
   L1i cache:                               1 MiB (16 instances)
   L2 cache:                                32 MiB (16 instances)
   L3 cache:                                80 MiB (1 instance)
   NUMA node(s):                            1
   NUMA node0 CPU(s):                       0-15
   Vulnerability Gather data sampling:      Not affected
   Vulnerability Indirect target selection: Not affected
   Vulnerability Itlb multihit:             Not affected
   Vulnerability L1tf:                      Not affected
   Vulnerability Mds:                       Not affected
   Vulnerability Meltdown:                  Not affected
   Vulnerability Mmio stale data:           Not affected
   Vulnerability Reg file data sampling:    Not affected
   Vulnerability Retbleed:                  Not affected
   Vulnerability Spec rstack overflow:      Not affected
   Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
   Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
   Vulnerability Spectre v2:                Mitigation; CSV2, BHB
   Vulnerability Srbds:                     Not affected
   Vulnerability Tsa:                       Not affected
   Vulnerability Tsx async abort:           Not affected
   Vulnerability Vmscape:                   Not affected
   ```
   
   </details>
   
   Comparing neilc/decimal-parser-precision-by-digits (dcc0266ea46bed33d44a570da85e40e894e46d60) to b1aa94b (merge-base) [diff](https://github.com/apache/arrow-rs/compare/b1aa94b05c88ef4cc6d0293d784bbc254537e942..dcc0266ea46bed33d44a570da85e40e894e46d60)
   
   <details><summary>Run configuration</summary>
   
   ```yaml
   run benchmark cast_kernels
   env:
     BENCH_FILTER: "parse_decimal"
   ```
   
   </details>
   
   BENCH_COMMAND=cargo bench --features=arrow,async,test_common,experimental,object_store --bench cast_kernels
   Results will be posted here when complete
   
   ---
   [File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "Rich-T-kid (via GitHub)" <gi...@apache.org>.
Rich-T-kid commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5552627943

   run benchmark cast_kernels
   env:
     BENCH_FILTER: parse_decimal


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "Jefffrey (via GitHub)" <gi...@apache.org>.
Jefffrey merged PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5552650548

   Benchmark for [this request](https://github.com/apache/arrow-rs/pull/10998#issuecomment-5552627943) failed before finishing (Kubernetes reason: `BackoffLimitExceeded`).
   
   Benchmarks requested: `cast_kernels`
   
   <details><summary>Runner log (last 40 lines)</summary>
   
   ```
   2026-09-05T14:56:12.814495Z  INFO runner starting benchmark runner bench_type=ArrowCriterion, pr_url=https://github.com/apache/arrow-rs/pull/10998, benchmarks=cast_kernels
   2026-09-05T14:56:12.877827Z  INFO benchmark_controller::runner::bench_arrow === Cloning PR branch ===
   2026-09-05T14:56:12.877924Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["clone", "--depth=200", "https://github.com/apache/arrow-rs.git", "/workspace/arrow-rs-branch"], cwd="/"
   2026-09-05T14:56:17.888113Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["fetch", "origin", "refs/pull/10998/head:neilc/decimal-parser-precision-by-digits", "main"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:56:22.890526Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["checkout", "neilc/decimal-parser-precision-by-digits"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:56:27.891921Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["submodule", "update", "--init"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:56:32.894742Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["merge-base", "HEAD", "origin/main"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:56:37.896178Z  INFO benchmark_controller::runner::shell running command cmd=cargo, args=["update"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:56:42.898441Z  INFO benchmark_controller::runner::bench_arrow === Cloning merge-base ===
   2026-09-05T14:56:42.898458Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["clone", "--depth=200", "https://github.com/apache/arrow-rs.git", "/workspace/arrow-rs-base"], cwd="/"
   2026-09-05T14:56:47.900767Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["-c", "advice.detachedHead=false", "checkout", "b1aa94b05c88ef4cc6d0293d784bbc254537e942"], cwd="/workspace/arrow-rs-base"
   2026-09-05T14:56:52.902066Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["submodule", "update", "--init"], cwd="/workspace/arrow-rs-base"
   2026-09-05T14:56:57.904420Z  INFO benchmark_controller::runner::shell running command cmd=cargo, args=["update"], cwd="/workspace/arrow-rs-base"
   2026-09-05T14:57:02.905988Z  INFO benchmark_controller::runner::shell running command cmd=rustc, args=["--version"], cwd="/"
   2026-09-05T14:57:07.933847Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["rev-parse", "HEAD"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:57:12.934988Z  INFO benchmark_controller::runner::shell running command cmd=git, args=["rev-parse", "HEAD"], cwd="/workspace/arrow-rs-base"
   2026-09-05T14:57:17.938978Z  INFO benchmark_controller::runner::controller_client post_comment _repo=apache/arrow-rs, _pr_number=10998, job_id=2139
   2026-09-05T14:57:18.583022Z  INFO benchmark_controller::runner::bench_arrow === Compiling PR branch and merge-base in parallel ===
   2026-09-05T14:58:21.513817Z  INFO benchmark_controller::runner::bench_arrow === Compilation complete ===
   2026-09-05T14:58:21.513831Z  INFO benchmark_controller::runner::bench_arrow === Running benchmark on merge-base ===
   2026-09-05T14:58:21.513845Z  INFO benchmark_controller::runner::shell running command (monitored) cmd=cargo, args=["bench", "--features=arrow,async,test_common,experimental,object_store", "--bench", "cast_kernels", "--", "--save-baseline", "main", "parse_decimal"], cwd="/workspace/arrow-rs-base"
   2026-09-05T14:58:26.520985Z  INFO benchmark_controller::runner::bench_arrow === Running benchmark on PR branch ===
   2026-09-05T14:58:26.521004Z  INFO benchmark_controller::runner::shell running command (monitored) cmd=cargo, args=["bench", "--features=arrow,async,test_common,experimental,object_store", "--bench", "cast_kernels", "--", "--save-baseline", "neilc_decimal-parser-precision-by-digits", "parse_decimal"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:58:31.528001Z  INFO benchmark_controller::runner::shell running command cmd=critcmp, args=["main", "neilc_decimal-parser-precision-by-digits"], cwd="/workspace/arrow-rs-branch"
   2026-09-05T14:58:36.530670Z ERROR runner benchmark failed error=critcmp: critcmp main neilc_decimal-parser-precision-by-digits exited with code 1
   stdout:
   
   stderr:
   no criterion data exists at /workspace/arrow-rs-branch/target/criterion
   set a different target directory with --target-dir or set CARGO_TARGET_DIR
   ```
   
   </details>
   
   <details><summary>Kubernetes message</summary>
   
   ```
   Job has reached the specified backoff limit
   ```
   
   </details>
   
   ---
   [File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "Jefffrey (via GitHub)" <gi...@apache.org>.
Jefffrey commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556196831

   run benchmark parse_decimal


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556271381

   🤖 Arrow criterion benchmark completed (GKE) | [trigger](https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556196831)
   
   **Instance:** `c4a-highmem-16` (12 vCPU / 65 GiB)
   
   Comparing neilc/decimal-parser-precision-by-digits (dcc0266ea46bed33d44a570da85e40e894e46d60) to b1aa94b (merge-base) [diff](https://github.com/apache/arrow-rs/compare/b1aa94b05c88ef4cc6d0293d784bbc254537e942..dcc0266ea46bed33d44a570da85e40e894e46d60)
   
   <details><summary>Run configuration</summary>
   
   ```yaml
   run benchmark parse_decimal
   ```
   
   </details>
   
   <details><summary>CPU Details (lscpu)</summary>
   
   ```
   Architecture:                            aarch64
   CPU op-mode(s):                          64-bit
   Byte Order:                              Little Endian
   CPU(s):                                  16
   On-line CPU(s) list:                     0-15
   Vendor ID:                               ARM
   Model name:                              Neoverse-V2
   Model:                                   1
   Thread(s) per core:                      1
   Core(s) per cluster:                     16
   Socket(s):                               -
   Cluster(s):                              1
   Stepping:                                r0p1
   BogoMIPS:                                2000.00
   Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
   L1d cache:                               1 MiB (16 instances)
   L1i cache:                               1 MiB (16 instances)
   L2 cache:                                32 MiB (16 instances)
   L3 cache:                                80 MiB (1 instance)
   NUMA node(s):                            1
   NUMA node0 CPU(s):                       0-15
   Vulnerability Gather data sampling:      Not affected
   Vulnerability Indirect target selection: Not affected
   Vulnerability Itlb multihit:             Not affected
   Vulnerability L1tf:                      Not affected
   Vulnerability Mds:                       Not affected
   Vulnerability Meltdown:                  Not affected
   Vulnerability Mmio stale data:           Not affected
   Vulnerability Reg file data sampling:    Not affected
   Vulnerability Retbleed:                  Not affected
   Vulnerability Spec rstack overflow:      Not affected
   Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
   Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
   Vulnerability Spectre v2:                Mitigation; CSV2, BHB
   Vulnerability Srbds:                     Not affected
   Vulnerability Tsa:                       Not affected
   Vulnerability Tsx async abort:           Not affected
   Vulnerability Vmscape:                   Not affected
   ```
   
   </details>
   
   <details><summary>Details</summary>
   <p>
   
   ```
   group                                                main                                   neilc_decimal-parser-precision-by-digits
   -----                                                ----                                   ----------------------------------------
   parse_decimal/-.123                                  1.00     10.7±0.01µs 91.7 MElem/sec    1.00     10.6±0.00µs 91.8 MElem/sec
   parse_decimal/-00.1                                  1.09     19.3±0.01µs 50.6 MElem/sec    1.00     17.6±0.05µs 55.3 MElem/sec
   parse_decimal/-12.                                   1.11     18.5±0.02µs 52.9 MElem/sec    1.00     16.6±0.03µs 58.8 MElem/sec
   parse_decimal/-123                                   1.10     19.1±0.01µs 51.0 MElem/sec    1.00     17.4±0.04µs 56.0 MElem/sec
   parse_decimal/-123.                                  1.10     19.4±0.01µs 50.3 MElem/sec    1.00     17.7±0.05µs 55.3 MElem/sec
   parse_decimal/-123.1                                 1.07     20.4±0.01µs 47.9 MElem/sec    1.00     19.0±0.07µs 51.3 MElem/sec
   parse_decimal/-123.123                               1.00     12.6±0.03µs 77.3 MElem/sec    1.06     13.4±0.01µs 72.9 MElem/sec
   parse_decimal/-123.1234                              1.03     16.2±0.02µs 60.4 MElem/sec    1.00     15.8±0.02µs 61.9 MElem/sec
   parse_decimal/-12345678912345678.1234                1.01     44.5±0.05µs 21.9 MElem/sec    1.00     44.1±0.08µs 22.1 MElem/sec
   parse_decimal/-99999999999999999.999                 1.03     41.3±0.05µs 23.6 MElem/sec    1.00     40.0±0.07µs 24.4 MElem/sec
   parse_decimal/.123                                   1.06     11.3±0.01µs 86.0 MElem/sec    1.00     10.7±0.02µs 91.5 MElem/sec
   parse_decimal/0.0000123                              1.05     13.5±0.25µs 72.1 MElem/sec    1.00     12.9±0.42µs 75.7 MElem/sec
   parse_decimal/00.1                                   1.13     19.9±0.01µs 49.1 MElem/sec    1.00     17.6±0.06µs 55.5 MElem/sec
   parse_decimal/12.                                    1.16     19.2±0.01µs 50.9 MElem/sec    1.00     16.6±0.02µs 58.9 MElem/sec
   parse_decimal/123                                    1.13     19.6±0.01µs 49.8 MElem/sec    1.00     17.4±0.05µs 56.2 MElem/sec
   parse_decimal/123.                                   1.14     20.0±0.01µs 48.7 MElem/sec    1.00     17.6±0.04µs 55.5 MElem/sec
   parse_decimal/123.1                                  1.13     21.0±0.02µs 46.6 MElem/sec    1.00     18.6±0.06µs 52.5 MElem/sec
   parse_decimal/123.123                                1.00     12.8±0.06µs 76.1 MElem/sec    1.02     13.0±0.01µs 74.9 MElem/sec
   parse_decimal/123.1234                               1.02     16.0±0.08µs 61.0 MElem/sec    1.00     15.7±0.02µs 62.2 MElem/sec
   parse_decimal/12345678912345678.1234                 1.03     44.7±0.04µs 21.8 MElem/sec    1.00     43.4±0.06µs 22.5 MElem/sec
   parse_decimal/99999999999999999.999                  1.07     41.7±0.05µs 23.4 MElem/sec    1.00     38.9±0.03µs 25.1 MElem/sec
   parse_decimal/string decimal128 38 digits            1.00     45.4±0.56µs 21.5 MElem/sec    1.00     45.4±0.02µs 21.5 MElem/sec
   parse_decimal/string decimal128 exact scale          1.10     23.4±0.06µs 41.8 MElem/sec    1.00     21.3±0.02µs 45.8 MElem/sec
   parse_decimal/string decimal128 exponent             1.04     34.9±0.02µs 28.0 MElem/sec    1.00     33.4±0.03µs 29.2 MElem/sec
   parse_decimal/string decimal128 integer              1.05     23.5±0.01µs 41.5 MElem/sec    1.00     22.3±0.01µs 43.8 MElem/sec
   parse_decimal/string decimal128 long fraction        1.00     39.6±0.08µs 24.6 MElem/sec    1.00     39.6±0.04µs 24.6 MElem/sec
   parse_decimal/string decimal128 negative exponent    1.02     41.2±0.01µs 23.7 MElem/sec    1.00     40.4±0.07µs 24.2 MElem/sec
   parse_decimal/string decimal128 negative scale       1.03     30.1±0.08µs 32.5 MElem/sec    1.00     29.1±0.06µs 33.5 MElem/sec
   parse_decimal/string decimal128 padded scale         1.04     21.0±0.03µs 46.5 MElem/sec    1.00     20.1±0.03µs 48.5 MElem/sec
   parse_decimal/string decimal128 rounded scale        1.06     26.2±0.03µs 37.3 MElem/sec    1.00     24.7±0.03µs 39.5 MElem/sec
   parse_decimal/string decimal128 short                1.07     13.6±0.02µs 71.6 MElem/sec    1.00     12.7±0.04µs 76.6 MElem/sec
   parse_decimal/string decimal128 signed               1.06     26.1±0.02µs 37.4 MElem/sec    1.00     24.7±0.02µs 39.5 MElem/sec
   parse_decimal/string decimal256 76 digits            1.05    107.5±0.09µs  9.1 MElem/sec    1.00    102.3±0.08µs  9.5 MElem/sec
   parse_decimal/string decimal256 rounded scale        1.03     93.7±0.04µs 10.4 MElem/sec    1.00     90.6±0.05µs 10.8 MElem/sec
   parse_decimal/string decimal32 9 digits              1.03     14.1±0.01µs 69.3 MElem/sec    1.00     13.7±0.01µs 71.1 MElem/sec
   parse_decimal/string decimal32 short                 1.03     12.0±0.01µs 81.3 MElem/sec    1.00     11.7±0.18µs 83.4 MElem/sec
   parse_decimal/string decimal64 18 digits             1.04     22.7±0.02µs 43.0 MElem/sec    1.00     21.7±0.02µs 44.9 MElem/sec
   parse_decimal/string decimal64 short                 1.00     11.3±0.01µs 86.1 MElem/sec    1.02     11.6±0.24µs 84.4 MElem/sec
   ```
   
   </p>
   </details>
   
   <details><summary>Resource Usage</summary>
   
   **base (merge-base)**
   | Metric | Value |
   |--------|-------|
   | Wall time | 380.1s |
   | Peak memory | 10.8 MiB |
   | Avg memory | 10.3 MiB |
   | CPU user | 374.2s |
   | CPU sys | 0.0s |
   | Peak spill | 0 B |
   
   **branch**
   | Metric | Value |
   |--------|-------|
   | Wall time | 375.1s |
   | Peak memory | 11.1 MiB |
   | Avg memory | 10.6 MiB |
   | CPU user | 373.4s |
   | CPU sys | 0.0s |
   | Peak spill | 0 B |
   </details>
   
   
   ---
   [File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] perf: Count digits to skip precision check when parsing decimals [arrow-rs]

Posted by "Jefffrey (via GitHub)" <gi...@apache.org>.
Jefffrey commented on PR #10998:
URL: https://github.com/apache/arrow-rs/pull/10998#issuecomment-5556344185

   🚀 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org