No description
- PureBasic 93.8%
- Shell 6.2%
20 neue Smoke-Asserts in Section [15] (lhs_json_smoke.pb): - Fix #1 UTF-8: invalid continuation, stray continuation, encoded surrogate, valid multi-byte - Fix #2 Builder State-Machine: Push-in-Object, Key-in-Array, Doppel-Root, ArrEnd-in-Object, FinalizeToString offen/leer, Valid-Path - Fix #3 Decoded Keys: \/ via ObjectGet, \n im Key, UTF-8-Multi-Byte Key, KeyString liefert dekodiert - Fix #4 Float: NaN broken, Infinity broken, finite OK Plus Section 10: 2 alte laxe Tests angepasst auf neue strikte Semantik ("Fresh builder Not-yet-valid" + "ObjEnd ohne Open → broken"). Submodule-Bump lhs_lib → 079e694. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| bench_results | ||
| lhs_lib@079e694f97 | ||
| tests | ||
| .gitignore | ||
| .gitmodules | ||
| CLAUDE.md | ||
| README.md | ||
lhs_lib_full
Wrapper-Repository für lhs_lib (eingebunden als Git-Submodule) plus Tests, Benchmarks und Bench-Ergebnisse.
Analog zum NET_Framework-Layout (net_lib als Submodule + Drumherum).
Verzeichnis-Layout
lhs_lib_full/
├── lhs_lib/ ← Submodule: gitea.lihaso.com:3001/PB_Includes/lhs_lib.git
│ ├── SYS/ (Module: lhs_arena, lhs_atomic, lhs_lockfree_queue,
│ │ lhs_disk_vfs, lhs_log, lhs_log_ext, lhs_uuid,
│ │ lhs_sys_debug_wrapper)
│ ├── GUI/ (lhs_dialog)
│ └── README.md
├── tests/
│ ├── lhs_arena_bench.pb Performance-Benchmark gegen PB-Native
│ ├── lhs_arena_memprof.pb Memory-Footprint-Profiler (Peak-RSS, Page-Faults)
│ └── build_csv.sh Vergleichstabellen-Generator
└── bench_results/
├── comparison.csv Modern vs alte CPU
├── ryzen_results.txt Ryzen AI 9 HX 370 (24c, Zen 5)
├── x5650_results.txt Xeon X5650 (4c VM, Westmere)
├── memprof_local.txt Memory-Profile Ryzen
└── memprof_x5650.txt Memory-Profile X5650
Clone mit Submodule
git clone --recurse-submodules ssh://git@gitea.lihaso.com:3001/PB_Includes/lhs_lib_full.git
# oder nachträglich:
git clone ssh://git@gitea.lihaso.com:3001/PB_Includes/lhs_lib_full.git
cd lhs_lib_full
git submodule update --init --recursive
Tests bauen + laufen
cd tests
pbcompilerc lhs_arena_bench.pb --thread --optimizer --executable arena_bench
pbcompilerc lhs_arena_memprof.pb --executable arena_memprof
./arena_bench > ../bench_results/$(hostname)_bench.txt
./arena_memprof pb 100000 > ../bench_results/$(hostname)_memprof_pb.txt
./arena_memprof arena 100000 > ../bench_results/$(hostname)_memprof_arena.txt
./arena_memprof ppql_pb 50000 > ../bench_results/$(hostname)_memprof_ppql_pb.txt
./arena_memprof ppql_arena 50000 > ../bench_results/$(hostname)_memprof_ppql_arena.txt
Bench-Highlights
Ryzen AI 9 HX 370 (24 Cores, Zen 5) gegen PB-Native bei 100 000 Map-Einträgen:
| Test | PB-Native | lhs_arena | Speedup |
|---|---|---|---|
| Map-Lifecycle (Insert + Lookup + Cleanup) | 269 ms | 27.6 ms | 9.7× |
| Concurrent (1000 Threads × 5k ops, 90% read) | 4.62 s | 102 ms | 45× |
| PPQL Result-Set 50k Rows × 10 Cols | 9.89 s | 69 ms | 143× |
| HTTP Header-Match (500 known, Bytes-API) | 1.4 µs/op | 43 ns/op | 32× |
Xeon X5650 (4c VM, Westmere) — vor allem im Tail-Latency-Verhalten und unter Heap-Druck zeigt sich der Gewinn ähnlich oder deutlicher.
Volle Auswertung: bench_results/comparison.csv
Lizenz
SPDX-License-Identifier: LGPL-2.1-or-later OR Commercial
Siehe lhs_lib/README.md für Details und info@lihaso.ch für kommerzielle Lizenzierung.