Skip to content

Commit

Permalink
Fix spacetime server clear (#2055)
Browse files Browse the repository at this point in the history
  • Loading branch information
coolreader18 authored Dec 12, 2024
1 parent 3782f88 commit cdfa7aa
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 22 deletions.
2 changes: 1 addition & 1 deletion crates/cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ pub async fn exec_subcommand(
"list" => list::exec(config, args).await,
"init" => init::exec(config, args).await,
"build" => build::exec(config, args).await.map(drop),
"server" => server::exec(config, args).await,
"server" => server::exec(config, paths, args).await,
"subscribe" => subscribe::exec(config, args).await,
#[cfg(feature = "standalone")]
"start" => start::exec(Some(paths), args).await,
Expand Down
27 changes: 15 additions & 12 deletions crates/cli/src/subcommands/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ use crate::{
};
use anyhow::Context;
use clap::{Arg, ArgAction, ArgMatches, Command};
use spacetimedb_standalone::subcommands::start::default_data_dir;
use std::path::PathBuf;
use spacetimedb_paths::{server::ServerDataDir, SpacetimePaths};
use tabled::{
settings::{object::Columns, Alignment, Modify, Style},
Table, Tabled,
Expand Down Expand Up @@ -104,21 +103,25 @@ fn get_subcommands() -> Vec<Command> {
.arg(
Arg::new("data_dir")
.long("data-dir")
.help("The path to the data directory for the database")
.default_value(default_data_dir().into_os_string())
.value_parser(clap::value_parser!(PathBuf)),
.help("The path to the server data directory to clear [default: that of the selected spacetime instance]")
.value_parser(clap::value_parser!(ServerDataDir)),
)
.arg(common_args::yes()),
// TODO: set-name, set-protocol, set-host, set-url
]
}

pub async fn exec(config: Config, args: &ArgMatches) -> Result<(), anyhow::Error> {
pub async fn exec(config: Config, paths: &SpacetimePaths, args: &ArgMatches) -> Result<(), anyhow::Error> {
let (cmd, subcommand_args) = args.subcommand().expect("Subcommand required");
exec_subcommand(config, cmd, subcommand_args).await
exec_subcommand(config, paths, cmd, subcommand_args).await
}

async fn exec_subcommand(config: Config, cmd: &str, args: &ArgMatches) -> Result<(), anyhow::Error> {
async fn exec_subcommand(
config: Config,
paths: &SpacetimePaths,
cmd: &str,
args: &ArgMatches,
) -> Result<(), anyhow::Error> {
match cmd {
"list" => exec_list(config, args).await,
"set-default" => exec_set_default(config, args).await,
Expand All @@ -127,7 +130,7 @@ async fn exec_subcommand(config: Config, cmd: &str, args: &ArgMatches) -> Result
"fingerprint" => exec_fingerprint(config, args).await,
"ping" => exec_ping(config, args).await,
"edit" => exec_edit(config, args).await,
"clear" => exec_clear(config, args).await,
"clear" => exec_clear(config, paths, args).await,
unknown => Err(anyhow::anyhow!("Invalid subcommand: {}", unknown)),
}
}
Expand Down Expand Up @@ -357,11 +360,11 @@ pub async fn exec_edit(mut config: Config, args: &ArgMatches) -> Result<(), anyh
Ok(())
}

async fn exec_clear(_config: Config, args: &ArgMatches) -> Result<(), anyhow::Error> {
async fn exec_clear(_config: Config, paths: &SpacetimePaths, args: &ArgMatches) -> Result<(), anyhow::Error> {
let force = args.get_flag("force");
let data_dir = args.get_one::<PathBuf>("data_dir").unwrap();
let data_dir = args.get_one::<ServerDataDir>("data_dir").unwrap_or(&paths.data_dir);

if data_dir.exists() {
if data_dir.0.exists() {
println!("Database path: {}", data_dir.display());

if !y_or_n(
Expand Down
9 changes: 0 additions & 9 deletions crates/standalone/src/subcommands/start.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use std::path::PathBuf;
use std::sync::Arc;

use crate::routes::router;
Expand Down Expand Up @@ -56,14 +55,6 @@ impl ProgramMode {
}
}

pub fn default_data_dir() -> PathBuf {
dirs::data_local_dir().unwrap().join(if cfg!(windows) {
"SpacetimeDB/data"
} else {
"spacetime/data"
})
}

pub fn cli(mode: ProgramMode) -> clap::Command {
let jwt_pub_key_path_arg = Arg::new("jwt_pub_key_path")
.long("jwt-pub-key-path")
Expand Down

2 comments on commit cdfa7aa

@github-actions
Copy link

@github-actions github-actions bot commented on cdfa7aa Dec 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Criterion benchmark results

Criterion benchmark report

YOU SHOULD PROBABLY IGNORE THESE RESULTS.

Criterion is a wall time based benchmarking system that is extremely noisy when run on CI. We collect these results for longitudinal analysis, but they are not reliable for comparing individual PRs.

Go look at the callgrind report instead.

empty

db on disk new latency old latency new throughput old throughput
sqlite 💿 409.6±2.01ns 418.2±3.32ns - -
sqlite 🧠 401.5±2.03ns 410.2±3.05ns - -
stdb_raw 💿 773.4±2.15ns 797.0±4.37ns - -
stdb_raw 🧠 773.3±3.78ns 796.5±2.11ns - -

insert_1

db on disk schema indices preload new latency old latency new throughput old throughput

insert_bulk

db on disk schema indices preload count new latency old latency new throughput old throughput
sqlite 💿 u32_u64_str btree_each_column 2048 256 577.1±0.96µs 582.9±0.51µs 1732 tx/sec 1715 tx/sec
sqlite 💿 u32_u64_str unique_0 2048 256 147.7±10.64µs 152.3±0.71µs 6.6 Ktx/sec 6.4 Ktx/sec
sqlite 💿 u32_u64_u64 btree_each_column 2048 256 461.7±0.31µs 466.3±0.54µs 2.1 Ktx/sec 2.1 Ktx/sec
sqlite 💿 u32_u64_u64 unique_0 2048 256 134.7±1.23µs 137.4±0.99µs 7.3 Ktx/sec 7.1 Ktx/sec
sqlite 🧠 u32_u64_str btree_each_column 2048 256 438.1±0.54µs 449.3±0.75µs 2.2 Ktx/sec 2.2 Ktx/sec
sqlite 🧠 u32_u64_str unique_0 2048 256 118.1±0.93µs 123.9±1.10µs 8.3 Ktx/sec 7.9 Ktx/sec
sqlite 🧠 u32_u64_u64 btree_each_column 2048 256 365.0±0.41µs 366.6±0.47µs 2.7 Ktx/sec 2.7 Ktx/sec
sqlite 🧠 u32_u64_u64 unique_0 2048 256 103.8±0.55µs 110.5±1.16µs 9.4 Ktx/sec 8.8 Ktx/sec
stdb_raw 💿 u32_u64_str btree_each_column 2048 256 596.4±18.39µs 588.3±40.31µs 1676 tx/sec 1699 tx/sec
stdb_raw 💿 u32_u64_str unique_0 2048 256 444.4±19.48µs 447.9±37.86µs 2.2 Ktx/sec 2.2 Ktx/sec
stdb_raw 💿 u32_u64_u64 btree_each_column 2048 256 329.5±6.49µs 378.6±6.15µs 3.0 Ktx/sec 2.6 Ktx/sec
stdb_raw 💿 u32_u64_u64 unique_0 2048 256 312.8±12.59µs 267.8±24.60µs 3.1 Ktx/sec 3.6 Ktx/sec
stdb_raw 🧠 u32_u64_str btree_each_column 2048 256 299.0±0.18µs 300.1±0.25µs 3.3 Ktx/sec 3.3 Ktx/sec
stdb_raw 🧠 u32_u64_str unique_0 2048 256 191.1±0.26µs 191.5±0.15µs 5.1 Ktx/sec 5.1 Ktx/sec
stdb_raw 🧠 u32_u64_u64 btree_each_column 2048 256 239.2±0.23µs 237.7±0.36µs 4.1 Ktx/sec 4.1 Ktx/sec
stdb_raw 🧠 u32_u64_u64 unique_0 2048 256 170.7±0.14µs 173.8±0.28µs 5.7 Ktx/sec 5.6 Ktx/sec

iterate

db on disk schema indices new latency old latency new throughput old throughput
sqlite 💿 u32_u64_str unique_0 21.7±0.24µs 22.0±0.21µs 45.0 Ktx/sec 44.4 Ktx/sec
sqlite 💿 u32_u64_u64 unique_0 19.9±0.16µs 20.8±0.13µs 49.0 Ktx/sec 47.0 Ktx/sec
sqlite 🧠 u32_u64_str unique_0 19.1±0.10µs 19.6±0.31µs 51.0 Ktx/sec 49.9 Ktx/sec
sqlite 🧠 u32_u64_u64 unique_0 17.2±0.11µs 18.3±0.25µs 56.8 Ktx/sec 53.3 Ktx/sec
stdb_raw 💿 u32_u64_str unique_0 4.4±0.00µs 4.5±0.00µs 221.0 Ktx/sec 215.7 Ktx/sec
stdb_raw 💿 u32_u64_u64 unique_0 4.3±0.00µs 4.5±0.00µs 226.1 Ktx/sec 219.4 Ktx/sec
stdb_raw 🧠 u32_u64_str unique_0 4.4±0.00µs 4.5±0.01µs 220.6 Ktx/sec 215.5 Ktx/sec
stdb_raw 🧠 u32_u64_u64 unique_0 4.3±0.00µs 4.5±0.01µs 226.2 Ktx/sec 219.2 Ktx/sec

find_unique

db on disk key type preload new latency old latency new throughput old throughput

filter

db on disk key type index strategy load count new latency old latency new throughput old throughput
sqlite 💿 string index 2048 256 69.2±0.08µs 70.1±0.18µs 14.1 Ktx/sec 13.9 Ktx/sec
sqlite 💿 u64 index 2048 256 65.1±0.12µs 66.1±0.15µs 15.0 Ktx/sec 14.8 Ktx/sec
sqlite 🧠 string index 2048 256 64.6±0.07µs 64.3±0.14µs 15.1 Ktx/sec 15.2 Ktx/sec
sqlite 🧠 u64 index 2048 256 59.9±0.06µs 60.4±0.11µs 16.3 Ktx/sec 16.2 Ktx/sec
stdb_raw 💿 string index 2048 256 4.9±0.00µs 4.9±0.00µs 197.8 Ktx/sec 200.2 Ktx/sec
stdb_raw 💿 u64 index 2048 256 4.9±0.01µs 4.8±0.00µs 200.8 Ktx/sec 203.4 Ktx/sec
stdb_raw 🧠 string index 2048 256 4.9±0.00µs 4.9±0.00µs 198.0 Ktx/sec 200.5 Ktx/sec
stdb_raw 🧠 u64 index 2048 256 4.9±0.01µs 4.8±0.00µs 201.0 Ktx/sec 203.5 Ktx/sec

serialize

schema format count new latency old latency new throughput old throughput
u32_u64_str bflatn_to_bsatn_fast_path 100 3.7±0.00µs 3.7±0.01µs 26.1 Mtx/sec 25.8 Mtx/sec
u32_u64_str bflatn_to_bsatn_slow_path 100 3.6±0.01µs 3.6±0.07µs 26.7 Mtx/sec 26.7 Mtx/sec
u32_u64_str bsatn 100 15.3±0.01ns 15.3±0.01ns 6.1 Gtx/sec 6.1 Gtx/sec
u32_u64_str bsatn 100 2.4±0.00µs 2.4±0.01µs 40.2 Mtx/sec 39.1 Mtx/sec
u32_u64_str json 100 4.8±0.04µs 5.0±0.01µs 20.0 Mtx/sec 19.0 Mtx/sec
u32_u64_str json 100 8.7±0.03µs 8.7±0.07µs 11.0 Mtx/sec 10.9 Mtx/sec
u32_u64_str product_value 100 1073.8±2.97ns 1073.5±1.05ns 88.8 Mtx/sec 88.8 Mtx/sec
u32_u64_u64 bflatn_to_bsatn_fast_path 100 947.6±1.19ns 941.2±17.09ns 100.6 Mtx/sec 101.3 Mtx/sec
u32_u64_u64 bflatn_to_bsatn_slow_path 100 2.8±0.00µs 2.8±0.00µs 34.2 Mtx/sec 34.2 Mtx/sec
u32_u64_u64 bsatn 100 15.9±0.01ns 15.9±0.01ns 5.9 Gtx/sec 5.9 Gtx/sec
u32_u64_u64 bsatn 100 1706.8±21.84ns 1841.9±49.01ns 55.9 Mtx/sec 51.8 Mtx/sec
u32_u64_u64 json 100 3.0±0.03µs 3.4±0.05µs 31.6 Mtx/sec 28.4 Mtx/sec
u32_u64_u64 json 100 6.0±0.22µs 6.0±0.06µs 16.0 Mtx/sec 15.8 Mtx/sec
u32_u64_u64 product_value 100 1073.1±0.92ns 1075.8±2.08ns 88.9 Mtx/sec 88.6 Mtx/sec
u64_u64_u32 bflatn_to_bsatn_fast_path 100 726.8±0.52ns 742.3±2.28ns 131.2 Mtx/sec 128.5 Mtx/sec
u64_u64_u32 bflatn_to_bsatn_slow_path 100 2.8±0.00µs 2.8±0.02µs 34.2 Mtx/sec 34.2 Mtx/sec
u64_u64_u32 bsatn 100 1716.5±39.67ns 1794.3±21.66ns 55.6 Mtx/sec 53.2 Mtx/sec
u64_u64_u32 bsatn 100 249.7±1.12ns 248.5±0.66ns 381.9 Mtx/sec 383.7 Mtx/sec
u64_u64_u32 json 100 3.0±0.03µs 3.1±0.01µs 31.6 Mtx/sec 31.2 Mtx/sec
u64_u64_u32 json 100 6.1±0.05µs 6.0±0.14µs 15.5 Mtx/sec 15.8 Mtx/sec
u64_u64_u32 product_value 100 1072.9±0.56ns 1075.5±4.40ns 88.9 Mtx/sec 88.7 Mtx/sec

stdb_module_large_arguments

arg size new latency old latency new throughput old throughput

stdb_module_print_bulk

line count new latency old latency new throughput old throughput

remaining

name new latency old latency new throughput old throughput
special/db_game/csharp/circles/load=10 2.7±0.01s 2.7±0.01s - -
special/db_game/csharp/circles/load=100 2.7±0.01s 2.7±0.01s - -
special/db_game/csharp/ia_loop/load=10 350.6±1.35ms 348.8±5.29ms - -
special/db_game/csharp/ia_loop/load=100 923.0±5.35ms 918.8±5.46ms - -
special/db_game/rust/circles/load=10 47.2±4.05ms 45.4±4.35ms - -
special/db_game/rust/circles/load=100 54.8±3.98ms 56.6±2.30ms - -
special/db_game/rust/ia_loop/load=10 9.3±0.52ms 8.6±0.18ms - -
special/db_game/rust/ia_loop/load=100 11.1±0.24ms 10.9±0.32ms - -
special/stdb_module/csharp/large_arguments/64KiB 2.6±1.06ms 2.3±0.53ms - -
special/stdb_module/csharp/print_bulk/lines=1 175.0±10.55µs 171.9±8.29µs - -
special/stdb_module/csharp/print_bulk/lines=100 1797.5±292.46µs 1762.9±301.04µs - -
special/stdb_module/csharp/print_bulk/lines=1000 14.4±2.96ms 15.4±2.87ms - -
special/stdb_module/rust/large_arguments/64KiB 106.5±7.16µs 92.8±10.40µs - -
special/stdb_module/rust/print_bulk/lines=1 53.7±5.37µs 50.6±5.15µs - -
special/stdb_module/rust/print_bulk/lines=100 597.5±8.65µs 596.6±3.60µs - -
special/stdb_module/rust/print_bulk/lines=1000 4.6±0.77ms 4.6±0.88ms - -
sqlite/💿/update_bulk/u32_u64_str/unique_0/load=2048/count=256 52.3±0.08µs 53.7±0.33µs 18.7 Ktx/sec 18.2 Ktx/sec
sqlite/💿/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 45.0±0.10µs 46.0±0.12µs 21.7 Ktx/sec 21.2 Ktx/sec
sqlite/🧠/update_bulk/u32_u64_str/unique_0/load=2048/count=256 37.4±0.15µs 38.7±0.21µs 26.1 Ktx/sec 25.3 Ktx/sec
sqlite/🧠/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 33.6±0.12µs 34.8±0.16µs 29.0 Ktx/sec 28.1 Ktx/sec
stdb_module/csharp/💿/update_bulk/u32_u64_str/unique_0/load=2048/count=256 11.7±0.26ms 12.0±0.78ms 85 tx/sec 83 tx/sec
stdb_module/csharp/💿/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 9.4±0.62ms 9.3±0.36ms 106 tx/sec 107 tx/sec
stdb_module/rust/💿/update_bulk/u32_u64_str/unique_0/load=2048/count=256 1237.8±31.67µs 1225.8±19.61µs 807 tx/sec 815 tx/sec
stdb_module/rust/💿/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 963.3±29.65µs 956.7±16.05µs 1038 tx/sec 1045 tx/sec
stdb_raw/💿/update_bulk/u32_u64_str/unique_0/load=2048/count=256 619.0±20.58µs 609.4±35.43µs 1615 tx/sec 1640 tx/sec
stdb_raw/💿/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 462.2±11.91µs 461.9±8.50µs 2.1 Ktx/sec 2.1 Ktx/sec
stdb_raw/🧠/update_bulk/u32_u64_str/unique_0/load=2048/count=256 341.5±0.37µs 341.9±0.33µs 2.9 Ktx/sec 2.9 Ktx/sec
stdb_raw/🧠/update_bulk/u32_u64_u64/unique_0/load=2048/count=256 307.9±0.39µs 307.3±0.69µs 3.2 Ktx/sec 3.2 Ktx/sec

@github-actions
Copy link

@github-actions github-actions bot commented on cdfa7aa Dec 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Callgrind benchmark results

Callgrind Benchmark Report

These benchmarks were run using callgrind,
an instruction-level profiler. They allow comparisons between sqlite (sqlite), SpacetimeDB running through a module (stdb_module), and the underlying SpacetimeDB data storage engine (stdb_raw). Callgrind emulates a CPU to collect the below estimates.

Measurement changes larger than five percent are in bold.

In-memory benchmarks

callgrind: empty transaction

db total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw 6455 6455 0.00% 6559 6555 0.06%
sqlite 5609 5609 0.00% 5951 5951 0.00%

callgrind: filter

db schema indices count preload _column data_type total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str no_index 64 128 1 u64 75267 75267 0.00% 75703 75711 -0.01%
stdb_raw u32_u64_str no_index 64 128 2 string 117551 117551 0.00% 118369 118321 0.04%
stdb_raw u32_u64_str btree_each_column 64 128 2 string 25090 25072 0.07% 25668 25634 0.13%
stdb_raw u32_u64_str btree_each_column 64 128 1 u64 24039 24039 0.00% 24463 24471 -0.03%
sqlite u32_u64_str no_index 64 128 2 string 144351 144351 0.00% 145901 145901 0.00%
sqlite u32_u64_str no_index 64 128 1 u64 123742 123742 0.00% 125194 125194 0.00%
sqlite u32_u64_str btree_each_column 64 128 1 u64 131059 131059 0.00% 132691 132687 0.00%
sqlite u32_u64_str btree_each_column 64 128 2 string 134158 134158 0.00% 135824 135824 0.00%

callgrind: insert bulk

db schema indices count preload total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 64 128 814989 815455 -0.06% 832365 832871 -0.06%
stdb_raw u32_u64_str btree_each_column 64 128 1037127 1040515 -0.33% 1064925 1100193 -3.21%
sqlite u32_u64_str unique_0 64 128 399360 399360 0.00% 415586 415582 0.00%
sqlite u32_u64_str btree_each_column 64 128 984611 984611 0.00% 1024095 1024099 -0.00%

callgrind: iterate

db schema indices count total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 1024 138448 138448 0.00% 138564 138564 0.00%
stdb_raw u32_u64_str unique_0 64 15873 15873 0.00% 15985 15981 0.03%
sqlite u32_u64_str unique_0 1024 1042718 1042724 -0.00% 1046104 1046110 -0.00%
sqlite u32_u64_str unique_0 64 74704 74704 0.00% 75892 75892 0.00%

callgrind: serialize_product_value

count format total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
64 json 47528 47528 0.00% 50316 50316 0.00%
64 bsatn 25509 25509 0.00% 27787 27787 0.00%
16 bsatn 8200 8200 0.00% 9628 9628 0.00%
16 json 12188 12188 0.00% 14194 14194 0.00%

callgrind: update bulk

db schema indices count preload total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 1024 1024 19247980 19061720 0.98% 19736830 19597048 0.71%
stdb_raw u32_u64_str unique_0 64 128 1250433 1251271 -0.07% 1317695 1318901 -0.09%
sqlite u32_u64_str unique_0 1024 1024 1802137 1802155 -0.00% 1811113 1811143 -0.00%
sqlite u32_u64_str unique_0 64 128 128540 128540 0.00% 131306 131306 0.00%
On-disk benchmarks

callgrind: empty transaction

db total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw 6460 6460 0.00% 6564 6564 0.00%
sqlite 5651 5651 0.00% 6019 6019 0.00%

callgrind: filter

db schema indices count preload _column data_type total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str no_index 64 128 1 u64 75272 75272 0.00% 75704 75716 -0.02%
stdb_raw u32_u64_str no_index 64 128 2 string 117556 117548 0.01% 118218 118246 -0.02%
stdb_raw u32_u64_str btree_each_column 64 128 2 string 25076 25111 -0.14% 25602 25657 -0.21%
stdb_raw u32_u64_str btree_each_column 64 128 1 u64 24044 24044 0.00% 24460 24464 -0.02%
sqlite u32_u64_str no_index 64 128 1 u64 125663 125663 0.00% 127307 127311 -0.00%
sqlite u32_u64_str no_index 64 128 2 string 146272 146272 0.00% 148030 148038 -0.01%
sqlite u32_u64_str btree_each_column 64 128 2 string 136350 136344 0.00% 138360 138354 0.00%
sqlite u32_u64_str btree_each_column 64 128 1 u64 133155 133155 0.00% 135095 135099 -0.00%

callgrind: insert bulk

db schema indices count preload total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 64 128 763589 763257 0.04% 810989 810647 0.04%
stdb_raw u32_u64_str btree_each_column 64 128 986499 989743 -0.33% 1014731 1048797 -3.25%
sqlite u32_u64_str unique_0 64 128 416908 416908 0.00% 432638 432638 0.00%
sqlite u32_u64_str btree_each_column 64 128 1023158 1023158 0.00% 1062400 1062388 0.00%

callgrind: iterate

db schema indices count total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 1024 138453 138453 0.00% 138549 138549 0.00%
stdb_raw u32_u64_str unique_0 64 15878 15878 0.00% 15978 15978 0.00%
sqlite u32_u64_str unique_0 1024 1045786 1045786 0.00% 1049538 1049538 0.00%
sqlite u32_u64_str unique_0 64 76476 76476 0.00% 77788 77788 0.00%

callgrind: serialize_product_value

count format total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
64 json 47528 47528 0.00% 50316 50316 0.00%
64 bsatn 25509 25509 0.00% 27787 27787 0.00%
16 bsatn 8200 8200 0.00% 9628 9628 0.00%
16 json 12188 12188 0.00% 14194 14194 0.00%

callgrind: update bulk

db schema indices count preload total reads + writes old total reads + writes Δrw estimated cycles old estimated cycles Δcycles
stdb_raw u32_u64_str unique_0 1024 1024 17965952 17968185 -0.01% 18521832 18550015 -0.15%
stdb_raw u32_u64_str unique_0 64 128 1191056 1191002 0.00% 1257898 1257534 0.03%
sqlite u32_u64_str unique_0 1024 1024 1809785 1809785 0.00% 1818521 1818517 0.00%
sqlite u32_u64_str unique_0 64 128 132687 132687 0.00% 135517 135517 0.00%

Please sign in to comment.