GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Support SPECIES_128 by Squiry · Pull Request #41 · simdjson/simdjson-java

Conversation

@Squiry

@Squiry Squiry commented Feb 29, 2024

Copy link
Copy Markdown

Should help with #9, the performance is still kind of low though (half of what jsoniter shows)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@Squiry
Support SPECIES_128
7a3cdfd
@piotrrzysko

piotrrzysko commented Mar 3, 2024

Copy link
Copy Markdown
Member

Thanks for the contribution!

I'm a bit busy right now, working on a feature for the parser that I'll hopefully finish this month, so I can't promise when I'll be able to look at your PR, but I'll definitely do so. I believe that the most important thing is to make sure that this change doesn't affect the most common cases (256-bit and 512-bit registers).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

piotrrzysko added 2 commits April 29, 2024 06:40
@piotrrzysko
Merge branch 'main' into species-128-support
1ee499c
@piotrrzysko
Merge branch 'main' into species-128-support
6d59046
@piotrrzysko

piotrrzysko commented Apr 30, 2024

Copy link
Copy Markdown
Member

I've run the benchmarks on a machine with Neoverse-N1 CPU:

Architecture:             aarch64
  CPU op-mode(s):         32-bit, 64-bit
  Byte Order:             Little Endian
CPU(s):                   2
  On-line CPU(s) list:    0,1
Vendor ID:                ARM
  Model name:             Neoverse-N1
    Model:                1
    Thread(s) per core:   1
    Core(s) per socket:   2
    Socket(s):            1
    Stepping:             r3p1
    BogoMIPS:             243.75
    Flags:                fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid 

and the results are indeed unsatisfactory:

Benchmark                                                                              Mode  Cnt    Score   Error  Units
ParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_fastjson                   thrpt    5  436.897 ± 1.512  ops/s
ParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_jackson                    thrpt    5  380.908 ± 0.816  ops/s
ParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjson                   thrpt    5  197.846 ± 0.894  ops/s
ParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjsonPadded             thrpt    5  199.902 ± 0.545  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_fastjson        thrpt    5  626.115 ± 1.175  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_jackson         thrpt    5  463.471 ± 0.881  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_jsoniter_scala  thrpt    5  871.302 ± 4.688  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjson        thrpt    5  213.725 ± 0.452  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjsonPadded  thrpt    5  216.995 ± 0.329  ops/s

I'd like to understand where the disparity between 256/512-bit and 128-bit vectors comes from (see results in README for Intel CPUs). Currently, I don't have space to investigate this. Would you like to do it, or would you like me to come back to it when I have time?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Squiry

Squiry commented May 2, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Author

I'd like to understand where the disparity between 256/512-bit and 128-bit vectors comes from

The way I've implement that feature for 128bit is not the same as the arm64 implementation in original repo. They take a little bit different approach there, but I don't think we need that kind of details here anyway.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@piotrrzysko

piotrrzysko commented May 5, 2024

Copy link
Copy Markdown
Member

I think your code looks good. By the disparity between 256/512-bit and 128-bit vectors I meant the difference in performance. As you can see in README for the (SchemaBased)ParseAndSelectBenchmark simdjson-java is typically 3-4 times faster than other libraries. However, based on the results I shared in my previous comment, it appears that for 128-bit vectors, the performance doesn't even match that of other libraries. I'm curious about the root cause of this difference. Could it simply be due to narrower registers? Or perhaps there's something else we're missing?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Squiry

Squiry commented May 5, 2024

Copy link
Copy Markdown
Author

That's interesting. My MacBook with m1max gives me different result:

Benchmark                                                                              Mode  Cnt     Score    Error  Units
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_fastjson        thrpt    5  1874.904 ±  8.548  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_jackson         thrpt    5  1044.073 ± 39.591  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_jsoniter_scala  thrpt    5  2153.209 ± 22.102  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjson        thrpt    5  1120.909 ± 16.372  ops/s
SchemaBasedParseAndSelectBenchmark.countUniqueUsersWithDefaultProfile_simdjsonPadded  thrpt    5  1131.995 ± 42.193  ops/s

It's still bad, but not even close that bad.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@lschanchlane

lschanchlane commented Apr 16, 2025

Copy link
Copy Markdown

mac m2 i see an issue in parsing json, the error is Unsupported vector species: Species[byte,16,S_128_BIT]

TiLogic reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bluuewhale

bluuewhale commented Sep 19, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

We’re seeing init failures on AWS Graviton4 (128-bit species).
Is there a recommended fallback or branch to try?

On AWS Graviton4, initializing simdjson-java fails at startup with:
IllegalArgumentException: Unsupported vector species: Species[byte, 16, S_128_BIT]

Anyway, thank you for great work!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@piotrrzysko piotrrzysko mentioned this pull request Sep 20, 2026
Add 128-bit vector support #80
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@Squiry @piotrrzysko @lschanchlane @bluuewhale
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.