Repository navigation
Benchmark System.Data.SQLite alongside Microsoft.Data.Sqlite and Doublets - #100
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #1
- Added System.Data.SQLite NuGet package (v1.0.118) for comparison - Created SystemDataSQLiteTestRun implementation using ADO.NET approach - Added benchmarking comparison between System.Data.SQLite and EntityFramework - Updated target framework to .NET 7.0 for compatibility - Added comprehensive testing in experiments folder - Performance comparison shows System.Data.SQLite is ~10x faster than EF Core 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Check that everything is green and all requirements are fully delivered here. |
|
🤖 AI Work Session Started Starting automated work session at 2026-10-05T10:05:12.532Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait for the session to finish, and provide your feedback. Runtime: solve |
Working session summaryPR #100 is updated and ready for review.
This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
📊 Context and tokens usage:
Total: (162.9K + 5.2M cached) input tokens, 30.3K output tokens, $2.144749 cost 🤖 Models used:
📎 Log file uploaded as Gist (2866KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🎉 Auto-mergedThis pull request has been automatically merged by hive-mind.
Auto-merged by hive-mind with --auto-merge flag |
Fixes #1.
Adds System.Data.SQLite 2.0.4 to the current .NET 10 benchmark harness.
SystemDataSQLite_MemoryandSystemDataSQLite_Filerun the links and blog-post workloads with both 32-bit and 64-bit ids, alongside Microsoft.Data.Sqlite and every existing Doublets variant. Both SQLite providers share the same schemas, parameterized commands, immediate transactions and nativee_sqlite3library supplied by Microsoft.Data.Sqlite, so the comparison measures provider overhead against the same engine. JSON reports include both provider and engine versions.The report compares each System.Data.SQLite variant with Microsoft.Data.Sqlite of the same durability. Existing published results retain their original measurements; subsequent Benchmarks runs include the new provider. Both READMEs document the variants and reproducible commands. The earlier unverified EF Core speedup claims have been removed from this description.
Merged current
mainwithout rewriting history and resolved its move to the new benchmark harness. Removed the obsolete root projects, exception-swallowing experiments and committed temporary SQLite files introduced by the earlier draft. Current C# CI checks the provider lifecycle and executable reports on Linux, macOS and Windows; the existing Benchmarks workflow automatically measures the new variants.Reproduction and investigation
17709107773and17709103926match the September 2025 draft commits. Their logs have expired (GitHub returns HTTP 410), so their exact build diagnostics are unavailable.dotnet run -c Releasefails withSpecify which project file to use ... contains more than one project file. The maintained workflows now build and test the explicit solution undercsharp/.DllNotFoundExceptionfore_sqlite3. The committed experiment reproduces this with-p:IncludeNativeSQLite=falseand succeeds when Microsoft.Data.Sqlite supplies the native library. No runtime errors are swallowed.SystemDataSQLiteVariantsAreRegisteredfails for both missing variants. The report regression also fails becauseSystemDataSQLite_FileselectsSQLite_Memoryas its baseline. Both pass after the change.Verification
cd csharp && dotnet build -c Release -warnaserror: zero warnings/errors.cd csharp && dotnet test --project SQLiteVSDoublets.Tests -c Release --no-build: 37 passing tests, including both provider lifecycles, Unicode/empty-string/date round trips, transaction rollback and command reuse, and matching native engine versions.python3 experiments/system_data_sqlite/check_reports.py: four executable benchmark cases (links/objects × 32/64 bits), each with both providers in memory and files, 1,000 records and three repetitions; validates JSON versions, operation sets, sample counts and file sizes.python3 -m unittest discover -s scripts -v: 18 passing report tests, including chart generation and the durability regression.cd rust && cargo fmt --check && cargo clippy --release --all-targets -- -D warnings && cargo test --release: all checks pass, 9 tests pass.npx --yes markdownlint-cli@0.49.1 README.md README.ru.md experiments/system_data_sqlite/README.md: passes.python3 -m bandit experiments/system_data_sqlite/check_reports.py: zero findings. The smoke test uses an absolutedotnetpath, fixed arguments and no shell; its two generic subprocess warnings have narrow, documented exceptions.Final commit
ce2cda2is green: C# on Linux, macOS and Windows, all eight benchmark tables and report generation, CodeFactor and Codacy (zero new issues). The benchmark artifacts and workflow summary contain the measured System.Data.SQLite rows.The small runs verify correctness and report integration; they do not establish a general performance advantage for either provider.
Changes
.github/workflows/csharp.ymlREADME.mdREADME.ru.mdcsharp/SQLiteVSDoublets.Tests/StoragesTests.cscsharp/SQLiteVSDoublets/Harness.cscsharp/SQLiteVSDoublets/Links.cscsharp/SQLiteVSDoublets/Objects.cscsharp/SQLiteVSDoublets/Program.cscsharp/SQLiteVSDoublets/SQLiteStorage.cscsharp/SQLiteVSDoublets/SQLiteVSDoublets.csprojexperiments/system_data_sqlite/Program.csexperiments/system_data_sqlite/README.mdexperiments/system_data_sqlite/check_reports.pyexperiments/system_data_sqlite/system_data_sqlite.csprojscripts/benchmark_report.pyscripts/test_benchmark_report.py