Commit Graph

46 Commits

Author SHA1 Message Date
pedrocarlo
7508043b62 add bench for select count 2025-05-10 22:23:01 -03:00
Ihor Andrianov
db5e364210 made json an optional module again 2025-03-30 19:01:03 +03:00
Ihor Andrianov
a983c979c6 jsonb_merge, json_group_array, json_group_object 2025-03-30 18:47:33 +03:00
Ihor Andrianov
1daab8cd7c add bench to check json cache 2025-03-24 13:17:57 +02:00
Pere Diaz Bou
13d518d086 fragment bench functions 2025-03-19 17:55:24 +01:00
Ihor Andrianov
37c2655b6f Add jsonb bench 2025-03-14 19:46:29 +02:00
Pekka Enberg
96175cccf7 cli: Add --experimental-mvcc option to enable MVCC 2025-03-06 10:16:42 +02:00
Pekka Enberg
81b79bc833 core/mvcc: Eliminate row generic types
The logging code that writes out transactions to disk needs to write out
the byte array that we actually use. The code is less hairly without the
generics so drop them.
2025-03-05 19:17:16 +02:00
Pere Diaz Bou
8daf7666d1 Make database Sync + Send 2025-03-05 14:07:48 +01:00
Gustavo Sverzut Barbieri
cd2d817c10 github.com/penberg/limbo was moved to github.com/tursodatabase/limbo
Adjust all the references since they were broken
2025-02-08 10:21:49 -03:00
Pekka Enberg
7809df913a core/mvcc: Rename Database to MvStore 2025-02-07 07:40:33 +02:00
Pekka Enberg
c210821100 core: Move result row to ProgramState
Move result row to `ProgramState` to mimic what SQLite does where `Vdbe`
struct has a `pResultRow` member. This makes it easier to deal with result
lifetime, but more importantly, eventually lazily parse values at the edges of
the API.
2025-02-06 11:52:26 +02:00
Pekka Enberg
5870c92e9e core/mvcc: Fix MVCC benchmark SIGKILL
The `begin_tx` benchmark makes no sense because it just fills up memory with
transaction metadata, eventually killing the process...
2025-02-05 13:33:38 +02:00
Pekka Enberg
fad479ac59 core/mvcc: Move source code to module 2025-02-05 13:25:16 +02:00
Pekka Enberg
a045866a6c Merge 'core: Fix benchmark panic if syscall is interrupted' from Pekka Enberg
Fixes the following panics:
Benchmarking Execute `SELECT * FROM users LIMIT ?`/Limbo/100: Profiling
for 5.0000 sthread 'main' panicked at core/benches/benchmark.rs:69:43:
called `Result::unwrap()` on an `Err` value: IOError(Os { code: 4, kind:
Interrupted, message: "Interrupted system call" })
note: run with `RUST_BACKTRACE=1` environment variable to display a
backtrace

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #882
2025-02-04 18:25:34 +02:00
Pekka Enberg
097e56c19f core: Kill Statement::query() method
It's a pointless wrapper on top of `step()` that introduce additional
memory allocation and deallocation.
2025-02-04 13:46:11 +02:00
Pekka Enberg
7dbfdba59f core: Fix benchmark panic if syscall is interrupted
Fixes the following panics:

Benchmarking Execute `SELECT * FROM users LIMIT ?`/Limbo/100: Profiling for 5.0000 sthread 'main' panicked at core/benches/benchmark.rs:69:43:
called `Result::unwrap()` on an `Err` value: IOError(Os { code: 4, kind: Interrupted, message: "Interrupted system call" })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2025-02-04 13:24:55 +02:00
Levy A.
5acd7a5ea8 side by side comparison with sqlite 2025-01-31 03:11:07 -03:00
Pekka Enberg
7967cc5efc core: Kill Rows wrapper struct
It's just an useless wrapper, kill it.
2025-01-26 16:27:19 +02:00
Jorge Hermo
15f7928551 chore: enable all features in clippy ci and fix more clippy lints 2025-01-15 23:23:12 +01:00
Jussi Saurio
f0b3bac435 add new more complex benchmark entry for preparing statement 2025-01-05 13:51:56 +02:00
Pekka Enberg
f2ecebc357 Rename RowResult to StepResult
The name "row result" is confusing because it really *is* a result from
a step() call. The only difference is how a row is represented as we
return from VDBE or from a statement.

Therefore, rename RowResult to StepResult.
2024-12-27 10:20:41 +02:00
Pere Diaz Bou
93e3b49f08 bench 2024-12-25 00:25:23 +01:00
Pekka Enberg
e93ac38e55 Add statement interruption support
This adds an interrupt() method to Statement that allows apps to
interrupt a running statement. Please note that this is different from
`sqlite3_interrupt()` which interrupts all ongoing operations in a
database. Although we want to support that too, per statement interrupt
is much more useful to apps.
2024-12-19 12:30:32 +02:00
jussisaurio
b6e88ca883 cargo clippy --fix --allow-dirty && cargo fmt 2024-09-15 09:35:39 +03:00
Pekka Enberg
31308f3699 core: Switch SQLite to use locking_mode EXCLUSIVE
Let's switch the SQLite benchmarks to use similar file locking protocol
as we do. Improves SQLite's performance by 2x, but Limbo is still
faster.

Before:

rusqlite/Prepare statement: 'SELECT * FROM users LIMIT 1'
                        time:   [2.1027 µs 2.1239 µs 2.1563 µs]
                        thrpt:  [463.75 Kelem/s 470.83 Kelem/s 475.57 Kelem/s]

After:

rusqlite/Execute prepared statement: 'SELECT * FROM users LIMIT 1'
                        time:   [940.07 ns 944.16 ns 949.39 ns]
                        thrpt:  [1.0533 Melem/s 1.0591 Melem/s 1.0638 Melem/s]
2024-08-03 21:13:50 +03:00
Brayan Jules
78568a53e3 fix format issues 2024-07-24 21:09:36 -04:00
Brayan Jules
529770bf32 bench: fix db lock on benchmark code by splitting the scopes between limbo and rusqlite. 2024-07-24 20:48:17 -04:00
Joan Martinez
dd34a4c045 bench: fix compilation 2024-07-22 11:42:25 +02:00
jussisaurio
40aa081ec2 Conditionally disable rusqlite benchmark 2024-07-17 11:52:17 +03:00
Pekka Enberg
7fa8f5c62e Add benchmarks for prepare() 2024-07-16 08:44:49 +03:00
Raminder Singh
e4a9c5ce6e fix clippy warnings 2024-07-14 16:50:54 +05:30
Pekka Enberg
1d4850df37 Fix invalid database path 2024-06-29 17:36:36 +03:00
Pekka Enberg
cc101b1b00 Use larger and more realistic database for testing 2024-06-29 10:03:11 +03:00
Pere Diaz Bou
377073e158 core: I/O write path 2024-06-19 21:26:40 +03:00
Pekka Enberg
ba1ed2ec09 Run I/O loop in benchmarks
Fixes #50
2024-06-08 08:43:15 +03:00
Pekka Enberg
7232683dfe core: Fix benchmark 2024-05-08 11:13:29 -03:00
Pekka Enberg
9098744a37 Rename to Limbo 2023-09-30 15:40:35 +03:00
Pekka Enberg
29a6c6b877 Fix benchmark compilation 2023-09-09 10:24:08 +03:00
Pekka Enberg
4a5c71ab7a I/O interface refactoring 2023-09-09 10:22:26 +03:00
Pekka Enberg
49c19b55ab Unify sync I/O 2023-09-08 20:27:32 +03:00
Pekka Enberg
9b268dcc6f Compare performance to rusqlite 2023-09-02 21:22:38 +03:00
Pekka Enberg
9d2e7c89d7 Page cache 2023-09-02 19:32:49 +03:00
Pekka Enberg
0aca6a9caf Improve micro-benchmarks 2023-09-02 19:24:24 +03:00
Pekka Enberg
d33b70e3a8 Fix benchmark group name 2023-09-02 14:00:13 +03:00
Pekka Enberg
37baae3ed7 Benchmark 2023-09-02 13:43:07 +03:00