We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Updated Change Log (markdown)
Make precedence checking page more accurate. @wojciech-adaptive, pointed out that the information about being disabled by default was incorrect for Java. Thank you!
Add recent releases to change log.
Update docs to reflect changes in precedence checking flags.
Rename flags to enable field access order checking. The aim of this change is to avoid naming collisions with other flags, particularly in financial domains where "order" is used frequently.
Remove performance claim that is inaccurate for C++. At the moment, the drop in performance for C++ is more severe. [Baseline](https://github.com/real-logic/simple-binary-encoding/commit/8f480b9a239a1ac4b9122055852322cdc69df29c): ``` ./binaries/benchlet-sbe-car-runner Registering SbeCarBench run "RunSingleEncode" total iterations 20000000 Registering SbeCarBench run "RunSingleDecode" total iterations 20000000 Registering SbeCarBench run "RunSingleEncodeAndDecode" total iterations 20000000 Running benchmark SbeCarBench.RunSingleEncode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 50818806 nanoseconds. 19677.8 Kops/sec. 50.8188 nanos/op. Elapsed 45653469 nanoseconds. 21904.1 Kops/sec. 45.6535 nanos/op. Elapsed 45562045 nanoseconds. 21948.1 Kops/sec. 45.562 nanos/op. Elapsed 46079304 nanoseconds. 21701.7 Kops/sec. 46.0793 nanos/op. Elapsed 45781772 nanoseconds. 21842.8 Kops/sec. 45.7818 nanos/op. Elapsed 46086359 nanoseconds. 21698.4 Kops/sec. 46.0864 nanos/op. Elapsed 45999963 nanoseconds. 21739.1 Kops/sec. 46 nanos/op. Elapsed 45812503 nanoseconds. 21828.1 Kops/sec. 45.8125 nanos/op. Elapsed 46094322 nanoseconds. 21694.6 Kops/sec. 46.0943 nanos/op. Elapsed 46086009 nanoseconds. 21698.6 Kops/sec. 46.086 nanos/op. Elapsed 45671908 nanoseconds. 21895.3 Kops/sec. 45.6719 nanos/op. Elapsed 46107382 nanoseconds. 21688.5 Kops/sec. 46.1074 nanos/op. Elapsed 45995073 nanoseconds. 21741.5 Kops/sec. 45.9951 nanos/op. Elapsed 46085311 nanoseconds. 21698.9 Kops/sec. 46.0853 nanos/op. Elapsed 46558291 nanoseconds. 21478.5 Kops/sec. 46.5583 nanos/op. Elapsed 46129662 nanoseconds. 21678 Kops/sec. 46.1297 nanos/op. Elapsed 46078956 nanoseconds. 21701.9 Kops/sec. 46.079 nanos/op. Elapsed 46121141 nanoseconds. 21682 Kops/sec. 46.1211 nanos/op. Elapsed 45209755 nanoseconds. 22119.1 Kops/sec. 45.2098 nanos/op. Elapsed 45086481 nanoseconds. 22179.6 Kops/sec. 45.0865 nanos/op. Avg elapsed/batch 4.61509e+07 nanoseconds Throughput 21668 Kops/sec. Avg nanos/op 46.1509 nanos/op Running benchmark SbeCarBench.RunSingleDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 36579349 nanoseconds. 27337.8 Kops/sec. 36.5793 nanos/op. Elapsed 36564472 nanoseconds. 27349 Kops/sec. 36.5645 nanos/op. Elapsed 36584238 nanoseconds. 27334.2 Kops/sec. 36.5842 nanos/op. Elapsed 36577533 nanoseconds. 27339.2 Kops/sec. 36.5775 nanos/op. Elapsed 36569012 nanoseconds. 27345.6 Kops/sec. 36.569 nanos/op. Elapsed 36572155 nanoseconds. 27343.2 Kops/sec. 36.5722 nanos/op. Elapsed 36577603 nanoseconds. 27339.1 Kops/sec. 36.5776 nanos/op. Elapsed 36559513 nanoseconds. 27352.7 Kops/sec. 36.5595 nanos/op. Elapsed 36561330 nanoseconds. 27351.3 Kops/sec. 36.5613 nanos/op. Elapsed 36588848 nanoseconds. 27330.7 Kops/sec. 36.5888 nanos/op. Elapsed 36588010 nanoseconds. 27331.4 Kops/sec. 36.588 nanos/op. Elapsed 36573692 nanoseconds. 27342.1 Kops/sec. 36.5737 nanos/op. Elapsed 36562168 nanoseconds. 27350.7 Kops/sec. 36.5622 nanos/op. Elapsed 36600721 nanoseconds. 27321.9 Kops/sec. 36.6007 nanos/op. Elapsed 36583050 nanoseconds. 27335.1 Kops/sec. 36.5831 nanos/op. Elapsed 36600302 nanoseconds. 27322.2 Kops/sec. 36.6003 nanos/op. Elapsed 36569361 nanoseconds. 27345.3 Kops/sec. 36.5694 nanos/op. Elapsed 36573273 nanoseconds. 27342.4 Kops/sec. 36.5733 nanos/op. Elapsed 36576067 nanoseconds. 27340.3 Kops/sec. 36.5761 nanos/op. Elapsed 36572435 nanoseconds. 27343 Kops/sec. 36.5724 nanos/op. Avg elapsed/batch 3.65767e+07 nanoseconds Throughput 27339.8 Kops/sec. Avg nanos/op 36.5767 nanos/op Running benchmark SbeCarBench.RunSingleEncodeAndDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 82565203 nanoseconds. 12111.6 Kops/sec. 82.5652 nanos/op. Elapsed 82625758 nanoseconds. 12102.8 Kops/sec. 82.6258 nanos/op. Elapsed 82540130 nanoseconds. 12115.3 Kops/sec. 82.5401 nanos/op. Elapsed 82562200 nanoseconds. 12112.1 Kops/sec. 82.5622 nanos/op. Elapsed 82545507 nanoseconds. 12114.5 Kops/sec. 82.5455 nanos/op. Elapsed 82520713 nanoseconds. 12118.2 Kops/sec. 82.5207 nanos/op. Elapsed 82522599 nanoseconds. 12117.9 Kops/sec. 82.5226 nanos/op. Elapsed 82578054 nanoseconds. 12109.8 Kops/sec. 82.5781 nanos/op. Elapsed 82578823 nanoseconds. 12109.6 Kops/sec. 82.5788 nanos/op. Elapsed 82563248 nanoseconds. 12111.9 Kops/sec. 82.5632 nanos/op. Elapsed 82553540 nanoseconds. 12113.4 Kops/sec. 82.5535 nanos/op. Elapsed 82561293 nanoseconds. 12112.2 Kops/sec. 82.5613 nanos/op. Elapsed 82557521 nanoseconds. 12112.8 Kops/sec. 82.5575 nanos/op. Elapsed 82535451 nanoseconds. 12116 Kops/sec. 82.5355 nanos/op. Elapsed 82575121 nanoseconds. 12110.2 Kops/sec. 82.5751 nanos/op. Elapsed 82554518 nanoseconds. 12113.2 Kops/sec. 82.5545 nanos/op. Elapsed 82572747 nanoseconds. 12110.5 Kops/sec. 82.5727 nanos/op. Elapsed 82603338 nanoseconds. 12106 Kops/sec. 82.6033 nanos/op. Elapsed 82574493 nanoseconds. 12110.3 Kops/sec. 82.5745 nanos/op. Elapsed 82547813 nanoseconds. 12114.2 Kops/sec. 82.5478 nanos/op. Avg elapsed/batch 8.25619e+07 nanoseconds Throughput 12112.1 Kops/sec. ``` [HEAD of feature/field-order-check](https://github.com/real-logic/simple-binary-encoding/commit/d33e54bc73506713e6f6b0e9eb208f2e46cc08dd) with `ENABLE_ACCESS_ORDER_CHECKS` symbol undefined: ``` ./binaries/benchlet-sbe-car-runner Registering SbeCarBench run "RunSingleEncode" total iterations 20000000 Registering SbeCarBench run "RunSingleDecode" total iterations 20000000 Registering SbeCarBench run "RunSingleEncodeAndDecode" total iterations 20000000 Running benchmark SbeCarBench.RunSingleEncode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 49316098 nanoseconds. 20277.4 Kops/sec. 49.3161 nanos/op. Elapsed 40968600 nanoseconds. 24408.9 Kops/sec. 40.9686 nanos/op. Elapsed 41362997 nanoseconds. 24176.2 Kops/sec. 41.363 nanos/op. Elapsed 42898609 nanoseconds. 23310.8 Kops/sec. 42.8986 nanos/op. Elapsed 40876549 nanoseconds. 24463.9 Kops/sec. 40.8765 nanos/op. Elapsed 41814595 nanoseconds. 23915.1 Kops/sec. 41.8146 nanos/op. Elapsed 41849585 nanoseconds. 23895.1 Kops/sec. 41.8496 nanos/op. Elapsed 42058971 nanoseconds. 23776.1 Kops/sec. 42.059 nanos/op. Elapsed 42674697 nanoseconds. 23433.1 Kops/sec. 42.6747 nanos/op. Elapsed 42204312 nanoseconds. 23694.3 Kops/sec. 42.2043 nanos/op. Elapsed 41839109 nanoseconds. 23901.1 Kops/sec. 41.8391 nanos/op. Elapsed 40819907 nanoseconds. 24497.9 Kops/sec. 40.8199 nanos/op. Elapsed 41668206 nanoseconds. 23999.1 Kops/sec. 41.6682 nanos/op. Elapsed 42957277 nanoseconds. 23278.9 Kops/sec. 42.9573 nanos/op. Elapsed 41108983 nanoseconds. 24325.6 Kops/sec. 41.109 nanos/op. Elapsed 42471457 nanoseconds. 23545.2 Kops/sec. 42.4715 nanos/op. Elapsed 41062048 nanoseconds. 24353.4 Kops/sec. 41.062 nanos/op. Elapsed 42569376 nanoseconds. 23491.1 Kops/sec. 42.5694 nanos/op. Elapsed 41964545 nanoseconds. 23829.6 Kops/sec. 41.9645 nanos/op. Elapsed 40338138 nanoseconds. 24790.4 Kops/sec. 40.3381 nanos/op. Avg elapsed/batch 4.21412e+07 nanoseconds Throughput 23729.7 Kops/sec. Avg nanos/op 42.1412 nanos/op Running benchmark SbeCarBench.RunSingleDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 30122441 nanoseconds. 33197.8 Kops/sec. 30.1224 nanos/op. Elapsed 30049595 nanoseconds. 33278.3 Kops/sec. 30.0496 nanos/op. Elapsed 30077741 nanoseconds. 33247.2 Kops/sec. 30.0777 nanos/op. Elapsed 30056789 nanoseconds. 33270.4 Kops/sec. 30.0568 nanos/op. Elapsed 30059024 nanoseconds. 33267.9 Kops/sec. 30.059 nanos/op. Elapsed 30025081 nanoseconds. 33305.5 Kops/sec. 30.0251 nanos/op. Elapsed 30033392 nanoseconds. 33296.3 Kops/sec. 30.0334 nanos/op. Elapsed 30019563 nanoseconds. 33311.6 Kops/sec. 30.0196 nanos/op. Elapsed 30024173 nanoseconds. 33306.5 Kops/sec. 30.0242 nanos/op. Elapsed 30050084 nanoseconds. 33277.8 Kops/sec. 30.0501 nanos/op. Elapsed 30058814 nanoseconds. 33268.1 Kops/sec. 30.0588 nanos/op. Elapsed 30044846 nanoseconds. 33283.6 Kops/sec. 30.0448 nanos/op. Elapsed 30033461 nanoseconds. 33296.2 Kops/sec. 30.0335 nanos/op. Elapsed 30059373 nanoseconds. 33267.5 Kops/sec. 30.0594 nanos/op. Elapsed 30093107 nanoseconds. 33230.2 Kops/sec. 30.0931 nanos/op. Elapsed 30054904 nanoseconds. 33272.4 Kops/sec. 30.0549 nanos/op. Elapsed 30068033 nanoseconds. 33257.9 Kops/sec. 30.068 nanos/op. Elapsed 30042890 nanoseconds. 33285.7 Kops/sec. 30.0429 nanos/op. Elapsed 30064611 nanoseconds. 33261.7 Kops/sec. 30.0646 nanos/op. Elapsed 30049665 nanoseconds. 33278.2 Kops/sec. 30.0497 nanos/op. Avg elapsed/batch 3.00544e+07 nanoseconds Throughput 33273 Kops/sec. Avg nanos/op 30.0544 nanos/op Running benchmark SbeCarBench.RunSingleEncodeAndDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 72070503 nanoseconds. 13875.3 Kops/sec. 72.0705 nanos/op. Elapsed 72155150 nanoseconds. 13859 Kops/sec. 72.1552 nanos/op. Elapsed 72401483 nanoseconds. 13811.9 Kops/sec. 72.4015 nanos/op. Elapsed 72442760 nanoseconds. 13804 Kops/sec. 72.4428 nanos/op. Elapsed 72077696 nanoseconds. 13873.9 Kops/sec. 72.0777 nanos/op. Elapsed 72064286 nanoseconds. 13876.5 Kops/sec. 72.0643 nanos/op. Elapsed 72102140 nanoseconds. 13869.2 Kops/sec. 72.1021 nanos/op. Elapsed 72032858 nanoseconds. 13882.6 Kops/sec. 72.0329 nanos/op. Elapsed 72254187 nanoseconds. 13840 Kops/sec. 72.2542 nanos/op. Elapsed 72229602 nanoseconds. 13844.7 Kops/sec. 72.2296 nanos/op. Elapsed 72102281 nanoseconds. 13869.2 Kops/sec. 72.1023 nanos/op. Elapsed 72048851 nanoseconds. 13879.5 Kops/sec. 72.0489 nanos/op. Elapsed 72143557 nanoseconds. 13861.3 Kops/sec. 72.1436 nanos/op. Elapsed 73651163 nanoseconds. 13577.5 Kops/sec. 73.6512 nanos/op. Elapsed 73011901 nanoseconds. 13696.4 Kops/sec. 73.0119 nanos/op. Elapsed 72172611 nanoseconds. 13855.7 Kops/sec. 72.1726 nanos/op. Elapsed 72242803 nanoseconds. 13842.2 Kops/sec. 72.2428 nanos/op. Elapsed 72070781 nanoseconds. 13875.2 Kops/sec. 72.0708 nanos/op. Elapsed 72323889 nanoseconds. 13826.7 Kops/sec. 72.3239 nanos/op. Elapsed 75033892 nanoseconds. 13327.3 Kops/sec. 75.0339 nanos/op. Avg elapsed/batch 7.24316e+07 nanoseconds Throughput 13806.1 Kops/sec. ``` [HEAD of feature/field-order-check](https://github.com/real-logic/simple-binary-encoding/commit/d33e54bc73506713e6f6b0e9eb208f2e46cc08dd) with `ENABLE_ACCESS_ORDER_CHECKS` symbol defined: ``` ./binaries/benchlet-sbe-car-runner Registering SbeCarBench run "RunSingleEncode" total iterations 20000000 Registering SbeCarBench run "RunSingleDecode" total iterations 20000000 Registering SbeCarBench run "RunSingleEncodeAndDecode" total iterations 20000000 Running benchmark SbeCarBench.RunSingleEncode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 170374444 nanoseconds. 5869.42 Kops/sec. 170.374 nanos/op. Elapsed 170846086 nanoseconds. 5853.22 Kops/sec. 170.846 nanos/op. Elapsed 164460798 nanoseconds. 6080.48 Kops/sec. 164.461 nanos/op. Elapsed 162755610 nanoseconds. 6144.18 Kops/sec. 162.756 nanos/op. Elapsed 163632683 nanoseconds. 6111.25 Kops/sec. 163.633 nanos/op. Elapsed 163816158 nanoseconds. 6104.4 Kops/sec. 163.816 nanos/op. Elapsed 164013251 nanoseconds. 6097.07 Kops/sec. 164.013 nanos/op. Elapsed 163683738 nanoseconds. 6109.34 Kops/sec. 163.684 nanos/op. Elapsed 163726062 nanoseconds. 6107.76 Kops/sec. 163.726 nanos/op. Elapsed 162998520 nanoseconds. 6135.03 Kops/sec. 162.999 nanos/op. Elapsed 162971421 nanoseconds. 6136.05 Kops/sec. 162.971 nanos/op. Elapsed 163661808 nanoseconds. 6110.16 Kops/sec. 163.662 nanos/op. Elapsed 163833059 nanoseconds. 6103.77 Kops/sec. 163.833 nanos/op. Elapsed 163324122 nanoseconds. 6122.79 Kops/sec. 163.324 nanos/op. Elapsed 163675147 nanoseconds. 6109.66 Kops/sec. 163.675 nanos/op. Elapsed 163160972 nanoseconds. 6128.92 Kops/sec. 163.161 nanos/op. Elapsed 165710618 nanoseconds. 6034.62 Kops/sec. 165.711 nanos/op. Elapsed 163635896 nanoseconds. 6111.13 Kops/sec. 163.636 nanos/op. Elapsed 164085398 nanoseconds. 6094.39 Kops/sec. 164.085 nanos/op. Elapsed 163709020 nanoseconds. 6108.4 Kops/sec. 163.709 nanos/op. Avg elapsed/batch 1.64404e+08 nanoseconds Throughput 6082.59 Kops/sec. Avg nanos/op 164.404 nanos/op Running benchmark SbeCarBench.RunSingleDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 146047561 nanoseconds. 6847.08 Kops/sec. 146.048 nanos/op. Elapsed 146177187 nanoseconds. 6841.01 Kops/sec. 146.177 nanos/op. Elapsed 147522481 nanoseconds. 6778.63 Kops/sec. 147.522 nanos/op. Elapsed 146392229 nanoseconds. 6830.96 Kops/sec. 146.392 nanos/op. Elapsed 145613075 nanoseconds. 6867.52 Kops/sec. 145.613 nanos/op. Elapsed 146405989 nanoseconds. 6830.32 Kops/sec. 146.406 nanos/op. Elapsed 146369601 nanoseconds. 6832.02 Kops/sec. 146.37 nanos/op. Elapsed 147013264 nanoseconds. 6802.11 Kops/sec. 147.013 nanos/op. Elapsed 146417373 nanoseconds. 6829.79 Kops/sec. 146.417 nanos/op. Elapsed 147563198 nanoseconds. 6776.76 Kops/sec. 147.563 nanos/op. Elapsed 146591908 nanoseconds. 6821.66 Kops/sec. 146.592 nanos/op. Elapsed 146564250 nanoseconds. 6822.95 Kops/sec. 146.564 nanos/op. Elapsed 148194848 nanoseconds. 6747.87 Kops/sec. 148.195 nanos/op. Elapsed 146702188 nanoseconds. 6816.53 Kops/sec. 146.702 nanos/op. Elapsed 148665720 nanoseconds. 6726.5 Kops/sec. 148.666 nanos/op. Elapsed 146593794 nanoseconds. 6821.57 Kops/sec. 146.594 nanos/op. Elapsed 149108657 nanoseconds. 6706.52 Kops/sec. 149.109 nanos/op. Elapsed 146497063 nanoseconds. 6826.08 Kops/sec. 146.497 nanos/op. Elapsed 148193730 nanoseconds. 6747.92 Kops/sec. 148.194 nanos/op. Elapsed 146276013 nanoseconds. 6836.39 Kops/sec. 146.276 nanos/op. Avg elapsed/batch 1.46946e+08 nanoseconds Throughput 6805.24 Kops/sec. Avg nanos/op 146.946 nanos/op Running benchmark SbeCarBench.RunSingleEncodeAndDecode. 1000000 iterations X 20 batches. MAX N = 10 [for Multiple runs] Elapsed 319226503 nanoseconds. 3132.57 Kops/sec. 319.227 nanos/op. Elapsed 318994629 nanoseconds. 3134.85 Kops/sec. 318.995 nanos/op. Elapsed 333296278 nanoseconds. 3000.33 Kops/sec. 333.296 nanos/op. Elapsed 351047556 nanoseconds. 2848.62 Kops/sec. 351.048 nanos/op. Elapsed 321438184 nanoseconds. 3111.02 Kops/sec. 321.438 nanos/op. Elapsed 320673277 nanoseconds. 3118.44 Kops/sec. 320.673 nanos/op. Elapsed 321952709 nanoseconds. 3106.05 Kops/sec. 321.953 nanos/op. Elapsed 321502719 nanoseconds. 3110.39 Kops/sec. 321.503 nanos/op. Elapsed 322045808 nanoseconds. 3105.15 Kops/sec. 322.046 nanos/op. Elapsed 321195415 nanoseconds. 3113.37 Kops/sec. 321.195 nanos/op. Elapsed 321340057 nanoseconds. 3111.97 Kops/sec. 321.34 nanos/op. Elapsed 321597006 nanoseconds. 3109.48 Kops/sec. 321.597 nanos/op. Elapsed 335471153 nanoseconds. 2980.88 Kops/sec. 335.471 nanos/op. Elapsed 321603989 nanoseconds. 3109.41 Kops/sec. 321.604 nanos/op. Elapsed 321454109 nanoseconds. 3110.86 Kops/sec. 321.454 nanos/op. Elapsed 323503827 nanoseconds. 3091.15 Kops/sec. 323.504 nanos/op. Elapsed 321357098 nanoseconds. 3111.8 Kops/sec. 321.357 nanos/op. Elapsed 322767065 nanoseconds. 3098.21 Kops/sec. 322.767 nanos/op. Elapsed 322361285 nanoseconds. 3102.11 Kops/sec. 322.361 nanos/op. Elapsed 320995527 nanoseconds. 3115.31 Kops/sec. 320.996 nanos/op. Avg elapsed/batch 3.24191e+08 nanoseconds Throughput 3084.6 Kops/sec. ```
Document new access order checking feature.
Updated Design Principles (markdown)
Fix typo