Skip to content

Rapidyaml #219

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open

Rapidyaml #219

wants to merge 25 commits into from

Conversation

biojppm
Copy link
Collaborator

@biojppm biojppm commented Feb 23, 2025

No description provided.

ingydotnet and others added 18 commits March 23, 2025 22:16
Adds a parser producing integer events, and integers signifying strings
by indexing into the parsed YS string.

Each event is provided as an integer bitmask. The event bits are
defined in both the C++ side (ysparse_evt_handler.hpp) and the Java
side (org.rapidyaml.Evt), and they need to stay consistent on both
ends. When a string is associated with an event, it is provided as an
integer offset and length.

For example, the YAML `say: 2 + 2` produces the following sequence of
integers:

```c++
BSTR,
BDOC,
VAL|BMAP|BLCK,
KEY|SCLR|PLAI, 0, 3, // "say"
VAL|SCLR|PLAI, 5, 5, // "2 + 2"
EMAP,
EDOC,
ESTR,
```

Note that the scalar events, ie "say" and "2 + 2", are followed each
by two extra integers encoding the offset and length of the scalar's
string. These two extra integers are present whenever the event has
any of the bits SCLR, ALIA, ANCH or TAG. For ease of use, there is a
bitmask HAS_STR, which enables quick testing by a simple `flags & HAS_STR`.

Also, where a string requires filtering, the parser filters it
in-place in the input string, and returns the extra integers
pertaining to the resulting filtered string.

The existing EDN-producing parser was not removed, and the
EVT-producing parser was added both on C++ and on the Java JNI bridge.

Tests were enlarged to cover the new event parsing, both for C++ and
Java.

To benefit from this approach, the YS side must implement a mechanism
to convert the int event sequence into its internal data-structure,
using the symbols in the class org.rapidyaml.Evt.

Other changes:

- rapidyaml->ysparse: start renaming the C++ library providing the
  JNI. ysparse is a more accurate description of what the library does.
- Directly use only the required rapidyaml source files instead of
  amalgamating into a single header.
- Makefile:
  - Add target to generate the JNI header
  - Improve target dependencies
-----
./yamllm.ys
     ys.length=9973
     call:edn...
     java:ys2edn...
0,001334ms: jni_ys2edn_parse/GetByteArray(src)
2,034402ms: jni_ys2edn_parse/GetByteArray(dst)
0,001137ms: jni_ys2evt_parse/GetStringUTFChars()
2,054268ms: jni_ys2edn_parse/get_jni_data  4,855MB/s
0,012533ms: reset + reserve
0,171602ms: parse_in_place  58,117MB/s
0,002153ms: ys2edn_retry_get
0,196662ms: ys2edn_parse  50,711MB/s
0,904333ms: jni_ys2edn_parse/release
3,171271ms: jni_ys2edn_parse  3,145MB/s
     java:ys2edn: 3.207848ms  3.109MB/s  9973B
     call:edn: 5.332002ms  1.870MB/s  9973B
     call:ednBuf...
     java:ys2ednBuf...
0,000844ms: jni_ys2edn_parse/get_jni_data  11816,350MB/s
0,001602ms: reset + reserve
0,113475ms: parse_in_place  87,887MB/s
0,001107ms: ys2edn_retry_get
0,124749ms: ys2edn_parse  79,945MB/s
0,127846ms: jni_ys2edn_parse/call_parse  78,008MB/s
0,139938ms: jni_ys2edn_parse  71,267MB/s
     java:ys2ednBuf: 0.168987ms  59.016MB/s  9973B
     call:ednBuf: 1.989086ms  5.014MB/s  9973B
     call:evt...
     java:ys2evtBuf...
0,017777ms: jni_ys2evt_parse/GetByteArray(src)
8,084726ms: jni_ys2evt_parse/GetIntArray(dst)
0,003211ms: jni_ys2evt_parse/GetStringUTFChars()
8,132883ms: jni_ys2evt_parse/get_jni  1,226MB/s
0,001486ms: reset + reserve
0,124894ms: parse_in_place  79,852MB/s
0,131290ms: ys2evt_parse  75,962MB/s
0,139889ms: jni_ys2evt_parse/call_parse  71,292MB/s
0,001429ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,264938ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000834ms: jni_ys2evt_parse/ReleaseStringUTFChars()
5,282080ms: jni_ys2evt_parse/release
13,560444ms: jni_ys2evt_parse  0,735MB/s
     java:ys2evt: 13.608809ms  0.733MB/s  9973B
     call:evt: 19.330048ms  0.516MB/s  9973B
     call:evtBuf...
     java:ys2evtBuf...
0,001106ms: jni_ys2evt_parse/get_jni  9017,179MB/s
0,000639ms: reset + reserve
0,067489ms: parse_in_place  147,772MB/s
0,073704ms: ys2evt_parse  135,312MB/s
0,077551ms: jni_ys2evt_parse/call_parse  128,599MB/s
0,092300ms: jni_ys2evt_parse  108,050MB/s
     java:ys2evtBuf: 0.117877ms  84.605MB/s  9973B
     call:evtBuf: 5.819274ms  1.714MB/s  9973B
-----
/home/jpmag/proj/rapidyaml/bm/cases/appveyor.yml
     ys.length=2129
     call:edn...
     java:ys2edn...
0,000978ms: jni_ys2edn_parse/GetByteArray(src)
2,058415ms: jni_ys2edn_parse/GetByteArray(dst)
0,001872ms: jni_ys2evt_parse/GetStringUTFChars()
2,082492ms: jni_ys2edn_parse/get_jni_data  1,022MB/s
0,002746ms: reset + reserve
0,034371ms: parse_in_place  61,942MB/s
0,000172ms: ys2edn_retry_get
0,045708ms: ys2edn_parse  46,578MB/s
0,773825ms: jni_ys2edn_parse/release
2,913689ms: jni_ys2edn_parse  0,731MB/s
     java:ys2edn: 2.921583ms  0.729MB/s  2129B
     call:edn: 4.583358ms  0.465MB/s  2129B
     call:ednBuf...
     java:ys2ednBuf...
0,001411ms: jni_ys2edn_parse/get_jni_data  1508,859MB/s
0,001593ms: reset + reserve
0,030772ms: parse_in_place  69,186MB/s
0,000219ms: ys2edn_retry_get
0,042616ms: ys2edn_parse  49,958MB/s
0,045226ms: jni_ys2edn_parse/call_parse  47,075MB/s
0,055543ms: jni_ys2edn_parse  38,331MB/s
     java:ys2ednBuf: 0.059724ms  35.647MB/s  2129B
     call:ednBuf: 0.811932ms  2.622MB/s  2129B
     call:evt...
     java:ys2evtBuf...
0,001258ms: jni_ys2evt_parse/GetByteArray(src)
8,076122ms: jni_ys2evt_parse/GetIntArray(dst)
0,002259ms: jni_ys2evt_parse/GetStringUTFChars()
8,100922ms: jni_ys2evt_parse/get_jni  0,263MB/s
0,000875ms: reset + reserve
0,022655ms: parse_in_place  93,975MB/s
0,031664ms: ys2evt_parse  67,237MB/s
0,034036ms: jni_ys2evt_parse/call_parse  62,551MB/s
0,001057ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,419873ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000952ms: jni_ys2evt_parse/ReleaseStringUTFChars()
5,435716ms: jni_ys2evt_parse/release
13,580720ms: jni_ys2evt_parse  0,157MB/s
     java:ys2evt: 13.590641ms  0.157MB/s  2129B
     call:evt: 19.339376ms  0.110MB/s  2129B
     call:evtBuf...
     java:ys2evtBuf...
0,002461ms: jni_ys2evt_parse/get_jni  865,095MB/s
0,000434ms: reset + reserve
0,025479ms: parse_in_place  83,559MB/s
0,033737ms: ys2evt_parse  63,106MB/s
0,038801ms: jni_ys2evt_parse/call_parse  54,870MB/s
0,056482ms: jni_ys2evt_parse  37,693MB/s
     java:ys2evtBuf: 0.062105ms  34.281MB/s  2129B
     call:evtBuf: 5.527016ms  0.385MB/s  2129B
-----
/home/jpmag/proj/rapidyaml/bm/cases/compile_commands.json
     ys.length=46825
     call:edn...
     java:ys2edn...
0,021512ms: jni_ys2edn_parse/GetByteArray(src)
2,120464ms: jni_ys2edn_parse/GetByteArray(dst)
0,001398ms: jni_ys2evt_parse/GetStringUTFChars()
2,160656ms: jni_ys2edn_parse/get_jni_data  21,672MB/s
0,002448ms: reset + reserve
0,219965ms: parse_in_place  212,875MB/s
0,003424ms: ys2edn_retry_get
0,236103ms: ys2edn_parse  198,324MB/s
0,802344ms: jni_ys2edn_parse/release
3,211247ms: jni_ys2edn_parse  14,582MB/s
     java:ys2edn: 3.219141ms  14.546MB/s  46825B
     call:edn: 5.002863ms  9.360MB/s  46825B
     call:ednBuf...
     java:ys2ednBuf...
0,001421ms: jni_ys2edn_parse/get_jni_data  32952,146MB/s
0,001445ms: reset + reserve
0,183100ms: parse_in_place  255,735MB/s
0,003680ms: ys2edn_retry_get
0,197663ms: ys2edn_parse  236,893MB/s
0,201021ms: jni_ys2edn_parse/call_parse  232,936MB/s
0,213063ms: jni_ys2edn_parse  219,771MB/s
     java:ys2ednBuf: 0.219173ms  213.644MB/s  46825B
     call:ednBuf: 0.979759ms  47.792MB/s  46825B
     call:evt...
     java:ys2evtBuf...
0,007270ms: jni_ys2evt_parse/GetByteArray(src)
8,447130ms: jni_ys2evt_parse/GetIntArray(dst)
0,001928ms: jni_ys2evt_parse/GetStringUTFChars()
8,480045ms: jni_ys2evt_parse/get_jni  5,522MB/s
0,000848ms: reset + reserve
0,095276ms: parse_in_place  491,467MB/s
0,101429ms: ys2evt_parse  461,653MB/s
0,104018ms: jni_ys2evt_parse/call_parse  450,162MB/s
0,003393ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,601116ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000839ms: jni_ys2evt_parse/ReleaseStringUTFChars()
5,620317ms: jni_ys2evt_parse/release
14,210879ms: jni_ys2evt_parse  3,295MB/s
     java:ys2evt: 14.220492ms  3.293MB/s  46825B
     call:evt: 19.957447ms  2.346MB/s  46825B
     call:evtBuf...
     java:ys2evtBuf...
0,002473ms: jni_ys2evt_parse/get_jni  18934,492MB/s
0,000712ms: reset + reserve
0,071757ms: parse_in_place  652,550MB/s
0,077564ms: ys2evt_parse  603,695MB/s
0,081212ms: jni_ys2evt_parse/call_parse  576,577MB/s
0,097283ms: jni_ys2evt_parse  481,328MB/s
     java:ys2evtBuf: 0.101433ms  461.635MB/s  46825B
     call:evtBuf: 5.983458ms  7.826MB/s  46825B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_seqs_flow_outer1000_inner100.yml
     ys.length=393000
     call:edn...
     java:ys2edn...
0,142092ms: jni_ys2edn_parse/GetByteArray(src)
2,126455ms: jni_ys2edn_parse/GetByteArray(dst)
0,001700ms: jni_ys2evt_parse/GetStringUTFChars()
2,285052ms: jni_ys2edn_parse/get_jni_data  171,987MB/s
0,002109ms: reset + reserve
8,302745ms: parse_in_place  47,334MB/s
0,166759ms: ys2edn_retry_get
8,485969ms: ys2edn_parse  46,312MB/s
0,999833ms: jni_ys2edn_parse/release
11,780786ms: jni_ys2edn_parse  33,359MB/s
     java:ys2edn: 11.790444ms  33.332MB/s  393000B
     call:edn: 14.609382ms  26.901MB/s  393000B
     call:ednBuf...
     java:ys2ednBuf...
0,002017ms: jni_ys2edn_parse/get_jni_data  194843,824MB/s
0,001862ms: reset + reserve
7,312239ms: parse_in_place  53,746MB/s
0,158746ms: ys2edn_retry_get
7,486341ms: ys2edn_parse  52,496MB/s
7,489023ms: jni_ys2edn_parse/call_parse  52,477MB/s
7,501143ms: jni_ys2edn_parse  52,392MB/s
     java:ys2ednBuf: 7.508824ms  52.338MB/s  393000B
     call:ednBuf: 8.480082ms  46.344MB/s  393000B
     call:evt...
     java:ys2evtBuf...
0,045725ms: jni_ys2evt_parse/GetByteArray(src)
8,427749ms: jni_ys2evt_parse/GetIntArray(dst)
0,002128ms: jni_ys2evt_parse/GetStringUTFChars()
8,498642ms: jni_ys2evt_parse/get_jni  46,243MB/s
0,000749ms: reset + reserve
2,269042ms: parse_in_place  173,201MB/s
2,277721ms: ys2evt_parse  172,541MB/s
2,280334ms: jni_ys2evt_parse/call_parse  172,343MB/s
0,030380ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,384011ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,001033ms: jni_ys2evt_parse/ReleaseStringUTFChars()
5,426795ms: jni_ys2evt_parse/release
16,211987ms: jni_ys2evt_parse  24,241MB/s
     java:ys2evt: 16.221876ms  24.227MB/s  393000B
     call:evt: 22.275141ms  17.643MB/s  393000B
     call:evtBuf...
     java:ys2evtBuf...
0,002334ms: jni_ys2evt_parse/get_jni  168380,464MB/s
0,000480ms: reset + reserve
2,258723ms: parse_in_place  173,992MB/s
2,268857ms: ys2evt_parse  173,215MB/s
2,271363ms: jni_ys2evt_parse/call_parse  173,024MB/s
2,286242ms: jni_ys2evt_parse  171,898MB/s
     java:ys2evtBuf: 2.296298ms  171.145MB/s  393000B
     call:evtBuf: 8.421487ms  46.666MB/s  393000B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_maps_flow_outer1000_inner100.yml
     ys.length=783000
     call:edn...
     java:ys2edn...
0,092991ms: jni_ys2edn_parse/GetByteArray(src)
0,835160ms: jni_ys2edn_parse/GetByteArray(dst)
0,001818ms: jni_ys2evt_parse/GetStringUTFChars()
0,945805ms: jni_ys2edn_parse/get_jni_data  827,866MB/s
0,002132ms: reset + reserve
14,063376ms: parse_in_place  55,677MB/s
0,322975ms: ys2edn_retry_get
14,405284ms: ys2edn_parse  54,355MB/s
1,018919ms: jni_ys2edn_parse/release
16,381964ms: jni_ys2edn_parse  47,796MB/s
     java:ys2edn: 16.394997ms  47.758MB/s  783000B
     call:edn: 23.038956ms  33.986MB/s  783000B
     call:ednBuf...
     java:ys2ednBuf...
0,001667ms: jni_ys2edn_parse/get_jni_data  469706,048MB/s
0,001485ms: reset + reserve
13,745988ms: parse_in_place  56,962MB/s
0,314753ms: ys2edn_retry_get
14,076574ms: ys2edn_parse  55,624MB/s
14,081208ms: jni_ys2edn_parse/call_parse  55,606MB/s
14,093569ms: jni_ys2edn_parse  55,557MB/s
     java:ys2ednBuf: 14.105751ms  55.509MB/s  783000B
     call:ednBuf: 15.099686ms  51.855MB/s  783000B
     call:evt...
     java:ys2evtBuf...
0,077090ms: jni_ys2evt_parse/GetByteArray(src)
8,194263ms: jni_ys2evt_parse/GetIntArray(dst)
0,002475ms: jni_ys2evt_parse/GetStringUTFChars()
8,297913ms: jni_ys2evt_parse/get_jni  94,361MB/s
0,001157ms: reset + reserve
4,913968ms: parse_in_place  159,342MB/s
4,923253ms: ys2evt_parse  159,041MB/s
4,926467ms: jni_ys2evt_parse/call_parse  158,937MB/s
0,073749ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,589391ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000823ms: jni_ys2evt_parse/ReleaseStringUTFChars()
5,674467ms: jni_ys2evt_parse/release
18,906420ms: jni_ys2evt_parse  41,415MB/s
     java:ys2evt: 18.918636ms  41.388MB/s  783000B
     call:evt: 21.359373ms  36.658MB/s  783000B
     call:evtBuf...
     java:ys2evtBuf...
0,002228ms: jni_ys2evt_parse/get_jni  351436,256MB/s
0,000757ms: reset + reserve
4,970937ms: parse_in_place  157,516MB/s
4,981731ms: ys2evt_parse  157,174MB/s
4,984258ms: jni_ys2evt_parse/call_parse  157,095MB/s
5,000104ms: jni_ys2evt_parse  156,597MB/s
     java:ys2evtBuf: 5.007758ms  156.357MB/s  783000B
     call:evtBuf: 10.750488ms  72.834MB/s  783000B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_seqs_flow_outer1000_inner1000.yml
     ys.length=3894000
     call:edn...
     java:ys2edn...
0,298067ms: jni_ys2edn_parse/GetByteArray(src)
1,110594ms: jni_ys2edn_parse/GetByteArray(dst)
0,001205ms: jni_ys2evt_parse/GetStringUTFChars()
1,427416ms: jni_ys2edn_parse/get_jni_data  2728,006MB/s
0,001941ms: reset + reserve
84,243172ms: parse_in_place  46,223MB/s
0,000034ms: ys2edn_retry_get
84,266029ms: ys2edn_parse  46,211MB/s
1,505299ms: jni_ys2edn_parse/release
87,211784ms: jni_ys2edn_parse  44,650MB/s
     java:ys2edn: 87.222893ms  44.644MB/s  3894000B
     java:ys2edn...
0,459691ms: jni_ys2edn_parse/GetByteArray(src)
5,877667ms: jni_ys2edn_parse/GetByteArray(dst)
0,001699ms: jni_ys2evt_parse/GetStringUTFChars()
6,357506ms: jni_ys2edn_parse/get_jni_data  612,504MB/s
0,135379ms: reset + reserve
75,206131ms: parse_in_place  51,778MB/s
2,077905ms: ys2edn_retry_get
77,437271ms: ys2edn_parse  50,286MB/s
2,688614ms: jni_ys2edn_parse/release
86,492966ms: jni_ys2edn_parse  45,021MB/s
     java:ys2edn: 86.502785ms  45.016MB/s  3894000B
     call:edn: 184.363892ms  21.121MB/s  3894000B
     call:ednBuf...
     java:ys2ednBuf...
0,001956ms: jni_ys2edn_parse/get_jni_data  1990797,568MB/s
0,002000ms: reset + reserve
71,676682ms: parse_in_place  54,327MB/s
0,000020ms: ys2edn_retry_get
71,692154ms: ys2edn_parse  54,316MB/s
71,694817ms: jni_ys2edn_parse/call_parse  54,314MB/s
71,707664ms: jni_ys2edn_parse  54,304MB/s
     java:ys2ednBuf: 71.715118ms  54.298MB/s  3894000B
     java:ys2ednBuf...
0,003304ms: jni_ys2edn_parse/get_jni_data  1178571,392MB/s
0,001898ms: reset + reserve
70,793625ms: parse_in_place  55,005MB/s
2,278467ms: ys2edn_retry_get
73,093513ms: ys2edn_parse  53,274MB/s
73,096558ms: jni_ys2edn_parse/call_parse  53,272MB/s
73,112923ms: jni_ys2edn_parse  53,260MB/s
     java:ys2ednBuf: 73.125305ms  53.251MB/s  3894000B
     call:ednBuf: 150.192001ms  25.927MB/s  3894000B
     call:evt...
     java:ys2evtBuf...
0,428085ms: jni_ys2evt_parse/GetByteArray(src)
8,114376ms: jni_ys2evt_parse/GetIntArray(dst)
0,001871ms: jni_ys2evt_parse/GetStringUTFChars()
8,565105ms: jni_ys2evt_parse/get_jni  454,635MB/s
0,000878ms: reset + reserve
21,515081ms: parse_in_place  180,989MB/s
21,525742ms: ys2evt_parse  180,900MB/s
21,528959ms: jni_ys2evt_parse/call_parse  180,873MB/s
0,447203ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,624267ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,001076ms: jni_ys2evt_parse/ReleaseStringUTFChars()
6,085247ms: jni_ys2evt_parse/release
36,185322ms: jni_ys2evt_parse  107,613MB/s
     java:ys2evt: 36.195786ms  107.582MB/s  3894000B
     call:evt: 40.740360ms  95.581MB/s  3894000B
     call:evtBuf...
     java:ys2evtBuf...
0,002188ms: jni_ys2evt_parse/get_jni  1779707,520MB/s
0,000720ms: reset + reserve
21,331545ms: parse_in_place  182,547MB/s
21,341160ms: ys2evt_parse  182,464MB/s
21,343897ms: jni_ys2evt_parse/call_parse  182,441MB/s
21,357212ms: jni_ys2evt_parse  182,327MB/s
     java:ys2evtBuf: 21.365120ms  182.260MB/s  3894000B
     call:evtBuf: 27.394588ms  142.145MB/s  3894000B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_maps_flow_outer1000_inner1000.yml
     ys.length=8784000
     call:edn...
     java:ys2edn...
1,007704ms: jni_ys2edn_parse/GetByteArray(src)
1,068609ms: jni_ys2edn_parse/GetByteArray(dst)
0,001282ms: jni_ys2evt_parse/GetStringUTFChars()
2,093804ms: jni_ys2edn_parse/get_jni_data  4195,235MB/s
0,001659ms: reset + reserve
151,732574ms: parse_in_place  57,891MB/s
0,000019ms: ys2edn_retry_get
151,752396ms: ys2edn_parse  57,884MB/s
2,056400ms: jni_ys2edn_parse/release
155,915070ms: jni_ys2edn_parse  56,338MB/s
     java:ys2edn: 155.926132ms  56.334MB/s  8784000B
     java:ys2edn...
0,968508ms: jni_ys2edn_parse/GetByteArray(src)
11,112817ms: jni_ys2edn_parse/GetByteArray(dst)
0,001311ms: jni_ys2evt_parse/GetStringUTFChars()
12,105033ms: jni_ys2edn_parse/get_jni_data  725,649MB/s
0,002236ms: reset + reserve
136,510681ms: parse_in_place  64,347MB/s
4,374031ms: ys2edn_retry_get
140,909515ms: ys2edn_parse  62,338MB/s
5,479193ms: jni_ys2edn_parse/release
158,506912ms: jni_ys2edn_parse  55,417MB/s
     java:ys2edn: 158.517197ms  55.414MB/s  8784000B
     call:edn: 336.565643ms  26.099MB/s  8784000B
     call:ednBuf...
     java:ys2ednBuf...
0,001840ms: jni_ys2edn_parse/get_jni_data  4773913,088MB/s
0,002572ms: reset + reserve
136,738342ms: parse_in_place  64,239MB/s
0,000035ms: ys2edn_retry_get
136,756714ms: ys2edn_parse  64,231MB/s
136,759857ms: jni_ys2edn_parse/call_parse  64,229MB/s
136,772003ms: jni_ys2edn_parse  64,224MB/s
     java:ys2ednBuf: 136.783600ms  64.218MB/s  8784000B
     java:ys2ednBuf...
0,003399ms: jni_ys2edn_parse/get_jni_data  2584289,536MB/s
0,002487ms: reset + reserve
136,512512ms: parse_in_place  64,346MB/s
4,273001ms: ys2edn_retry_get
140,816635ms: ys2edn_parse  62,379MB/s
140,819626ms: jni_ys2edn_parse/call_parse  62,378MB/s
140,835098ms: jni_ys2edn_parse  62,371MB/s
     java:ys2ednBuf: 140.862976ms  62.358MB/s  8784000B
     call:ednBuf: 286.745575ms  30.633MB/s  8784000B
     call:evt...
     java:ys2evtBuf...
1,004054ms: jni_ys2evt_parse/GetByteArray(src)
8,102132ms: jni_ys2evt_parse/GetIntArray(dst)
0,002797ms: jni_ys2evt_parse/GetStringUTFChars()
9,131552ms: jni_ys2evt_parse/get_jni  961,939MB/s
0,000792ms: reset + reserve
49,813385ms: parse_in_place  176,338MB/s
49,824718ms: ys2evt_parse  176,298MB/s
49,827583ms: jni_ys2evt_parse/call_parse  176,288MB/s
1,033283ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,743564ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,001015ms: jni_ys2evt_parse/ReleaseStringUTFChars()
6,790257ms: jni_ys2evt_parse/release
65,755936ms: jni_ys2evt_parse  133,585MB/s
     java:ys2evt: 65.765808ms  133.565MB/s  8784000B
     call:evt: 72.783669ms  120.686MB/s  8784000B
     call:evtBuf...
     java:ys2evtBuf...
0,018377ms: jni_ys2evt_parse/get_jni  477988,768MB/s
0,000729ms: reset + reserve
50,390553ms: parse_in_place  174,318MB/s
50,402847ms: ys2evt_parse  174,276MB/s
50,405594ms: jni_ys2evt_parse/call_parse  174,266MB/s
50,435165ms: jni_ys2evt_parse  174,164MB/s
     java:ys2evtBuf: 50.444641ms  174.131MB/s  8784000B
     call:evtBuf: 56.956013ms  154.224MB/s  8784000B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_seqs_flow_outer1000_inner1000_json.json
     ys.length=3894002
     call:edn...
     java:ys2edn...
0,330166ms: jni_ys2edn_parse/GetByteArray(src)
1,096978ms: jni_ys2edn_parse/GetByteArray(dst)
0,002020ms: jni_ys2evt_parse/GetStringUTFChars()
1,450136ms: jni_ys2edn_parse/get_jni_data  2685,267MB/s
0,002442ms: reset + reserve
71,063118ms: parse_in_place  54,796MB/s
0,000024ms: ys2edn_retry_get
71,079315ms: ys2edn_parse  54,784MB/s
1,544521ms: jni_ys2edn_parse/release
74,087189ms: jni_ys2edn_parse  52,560MB/s
     java:ys2edn: 74.098160ms  52.552MB/s  3894002B
     java:ys2edn...
0,426603ms: jni_ys2edn_parse/GetByteArray(src)
1,911429ms: jni_ys2edn_parse/GetByteArray(dst)
0,001644ms: jni_ys2evt_parse/GetStringUTFChars()
2,354758ms: jni_ys2edn_parse/get_jni_data  1653,674MB/s
0,001464ms: reset + reserve
69,939552ms: parse_in_place  55,677MB/s
2,210632ms: ys2edn_retry_get
72,166901ms: ys2edn_parse  53,958MB/s
2,714381ms: jni_ys2edn_parse/release
77,247299ms: jni_ys2edn_parse  50,410MB/s
     java:ys2edn: 77.256142ms  50.404MB/s  3894002B
     call:edn: 162.865555ms  23.909MB/s  3894002B
     call:ednBuf...
     java:ys2ednBuf...
0,002270ms: jni_ys2edn_parse/get_jni_data  1715419,392MB/s
0,002090ms: reset + reserve
70,507896ms: parse_in_place  55,228MB/s
0,000025ms: ys2edn_retry_get
70,521866ms: ys2edn_parse  55,217MB/s
70,524414ms: jni_ys2edn_parse/call_parse  55,215MB/s
70,535355ms: jni_ys2edn_parse  55,206MB/s
     java:ys2ednBuf: 70.543930ms  55.200MB/s  3894002B
     java:ys2ednBuf...
0,001999ms: jni_ys2edn_parse/get_jni_data  1947974,912MB/s
0,017705ms: reset + reserve
71,052269ms: parse_in_place  54,805MB/s
2,230100ms: ys2edn_retry_get
73,315285ms: ys2edn_parse  53,113MB/s
73,318420ms: jni_ys2edn_parse/call_parse  53,111MB/s
73,327438ms: jni_ys2edn_parse  53,104MB/s
     java:ys2ednBuf: 73.337601ms  53.097MB/s  3894002B
     call:ednBuf: 147.542007ms  26.392MB/s  3894002B
     call:evt...
     java:ys2evtBuf...
0,442496ms: jni_ys2evt_parse/GetByteArray(src)
8,129780ms: jni_ys2evt_parse/GetIntArray(dst)
0,002011ms: jni_ys2evt_parse/GetStringUTFChars()
8,595941ms: jni_ys2evt_parse/get_jni  453,005MB/s
0,000894ms: reset + reserve
21,720827ms: parse_in_place  179,275MB/s
21,730803ms: ys2evt_parse  179,193MB/s
21,734653ms: jni_ys2evt_parse/call_parse  179,161MB/s
0,421911ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,674166ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000743ms: jni_ys2evt_parse/ReleaseStringUTFChars()
6,109232ms: jni_ys2evt_parse/release
36,447289ms: jni_ys2evt_parse  106,839MB/s
     java:ys2evt: 36.457016ms  106.811MB/s  3894002B
     call:evt: 40.910328ms  95.184MB/s  3894002B
     call:evtBuf...
     java:ys2evtBuf...
0,002744ms: jni_ys2evt_parse/get_jni  1419096,960MB/s
0,000659ms: reset + reserve
21,838436ms: parse_in_place  178,310MB/s
21,850664ms: ys2evt_parse  178,210MB/s
21,853758ms: jni_ys2evt_parse/call_parse  178,185MB/s
21,869469ms: jni_ys2evt_parse  178,057MB/s
     java:ys2evtBuf: 21.878090ms  177.986MB/s  3894002B
     call:evtBuf: 28.053461ms  138.806MB/s  3894002B
-----
/home/jpmag/proj/rapidyaml/bm/cases/style_maps_flow_outer1000_inner1000_json.yml
     ys.length=8784002
     call:edn...
     java:ys2edn...
1,888226ms: jni_ys2edn_parse/GetByteArray(src)
2,544243ms: jni_ys2edn_parse/GetByteArray(dst)
0,002253ms: jni_ys2evt_parse/GetStringUTFChars()
4,454822ms: jni_ys2edn_parse/get_jni_data  1971,796MB/s
0,002021ms: reset + reserve
136,622375ms: parse_in_place  64,294MB/s
0,000020ms: ys2edn_retry_get
136,640030ms: ys2edn_parse  64,286MB/s
2,347279ms: jni_ys2edn_parse/release
143,458054ms: jni_ys2edn_parse  61,230MB/s
     java:ys2edn: 143.469604ms  61.226MB/s  8784002B
     java:ys2edn...
1,991961ms: jni_ys2edn_parse/GetByteArray(src)
11,108978ms: jni_ys2edn_parse/GetByteArray(dst)
0,002018ms: jni_ys2evt_parse/GetStringUTFChars()
13,122984ms: jni_ys2edn_parse/get_jni_data  669,360MB/s
0,001842ms: reset + reserve
136,570084ms: parse_in_place  64,319MB/s
4,254542ms: ys2edn_retry_get
140,848358ms: ys2edn_parse  62,365MB/s
5,660944ms: jni_ys2edn_parse/release
159,643997ms: jni_ys2edn_parse  55,022MB/s
     java:ys2edn: 159.653351ms  55.019MB/s  8784002B
     call:edn: 323.496796ms  27.153MB/s  8784002B
     call:ednBuf...
     java:ys2ednBuf...
0,001906ms: jni_ys2edn_parse/get_jni_data  4608605,696MB/s
0,002339ms: reset + reserve
136,883469ms: parse_in_place  64,171MB/s
0,000038ms: ys2edn_retry_get
136,904175ms: ys2edn_parse  64,162MB/s
136,907028ms: jni_ys2edn_parse/call_parse  64,160MB/s
136,920837ms: jni_ys2edn_parse  64,154MB/s
     java:ys2ednBuf: 136.933243ms  64.148MB/s  8784002B
     java:ys2ednBuf...
0,002604ms: jni_ys2edn_parse/get_jni_data  3373272,576MB/s
0,002970ms: reset + reserve
136,688339ms: parse_in_place  64,263MB/s
4,348243ms: ys2edn_retry_get
141,061874ms: ys2edn_parse  62,271MB/s
141,064972ms: jni_ys2edn_parse/call_parse  62,269MB/s
141,080063ms: jni_ys2edn_parse  62,263MB/s
     java:ys2ednBuf: 141.092941ms  62.257MB/s  8784002B
     call:ednBuf: 287.268158ms  30.578MB/s  8784002B
     call:evt...
     java:ys2evtBuf...
0,985668ms: jni_ys2evt_parse/GetByteArray(src)
8,121219ms: jni_ys2evt_parse/GetIntArray(dst)
0,002764ms: jni_ys2evt_parse/GetStringUTFChars()
9,133806ms: jni_ys2evt_parse/get_jni  961,702MB/s
0,000989ms: reset + reserve
50,007858ms: parse_in_place  175,652MB/s
50,019047ms: ys2evt_parse  175,613MB/s
50,022156ms: jni_ys2evt_parse/call_parse  175,602MB/s
0,965973ms: jni_ys2evt_parse/ReleaseByteArray(src)
5,844872ms: jni_ys2evt_parse/ReleaseIntArray(dst)
0,000858ms: jni_ys2evt_parse/ReleaseStringUTFChars()
6,827047ms: jni_ys2evt_parse/release
65,990753ms: jni_ys2evt_parse  133,110MB/s
     java:ys2evt: 66.000282ms  133.090MB/s  8784002B
     call:evt: 73.179230ms  120.034MB/s  8784002B
     call:evtBuf...
     java:ys2evtBuf...
0,004144ms: jni_ys2evt_parse/get_jni  2119691,648MB/s
0,000963ms: reset + reserve
49,682919ms: parse_in_place  176,801MB/s
49,695457ms: ys2evt_parse  176,757MB/s
49,698326ms: jni_ys2evt_parse/call_parse  176,746MB/s
49,730080ms: jni_ys2evt_parse  176,634MB/s
     java:ys2evtBuf: 49.739895ms  176.599MB/s  8784002B
     call:evtBuf: 56.250931ms  156.157MB/s  8784002B
@biojppm biojppm force-pushed the rapidyaml branch 4 times, most recently from c7f8ab1 to 5d98e23 Compare March 27, 2025 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants