diff --git a/Cargo.lock b/Cargo.lock index e3ab403..bf5d43e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,7 +35,7 @@ checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ "cfg-if", "cipher 0.4.4", - "cpufeatures", + "cpufeatures 0.2.17", "zeroize", ] @@ -128,6 +128,20 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "aquamarine" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "array-init" version = "2.1.0" @@ -200,6 +214,12 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -219,9 +239,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "aws-lc-rs" -version = "1.15.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e84ce723ab67259cfeb9877c6a639ee9eb7a27b28123abd71db7f0d5d0cc9d86" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" dependencies = [ "aws-lc-sys", "untrusted 0.7.1", @@ -230,9 +250,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.36.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a442ece363113bd4bd4c8b18977a7798dd4d3c3383f34fb61936960e8f4ad8" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" dependencies = [ "cc", "cmake", @@ -297,12 +317,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -311,9 +325,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" dependencies = [ "serde_core", ] @@ -341,7 +355,7 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures", + "cpufeatures 0.2.17", "zeroize", ] @@ -364,6 +378,12 @@ dependencies = [ "cipher 0.3.0", ] +[[package]] +name = "block-modes" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2211b0817f061502a8dd9f11a37e879e79763e3c698d2418cf824d8cb2f21e" + [[package]] name = "block-padding" version = "0.2.1" @@ -526,6 +546,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" version = "0.4.43" @@ -588,9 +619,9 @@ dependencies = [ [[package]] name = "cipherstash-client" -version = "0.32.2" +version = "0.34.1-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8ee3770269505a5673c268ed54421e46091374c9ad1a9163d558f704d98cf1" +checksum = "9f3d67cc26d8422509d2c20644576124e7344a4bf14ded06c7affa8dc18aabca" dependencies = [ "aes-gcm-siv", "anyhow", @@ -616,15 +647,16 @@ dependencies = [ "log", "miette", "opaque-debug", - "open", - "ore-rs 0.8.0", + "open 3.2.0", + "orderable-bytes", + "ore-rs 0.8.3", "percent-encoding", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.8.6", "recipher", "reqwest", "reqwest-middleware", "reqwest-retry", + "reqwest-tracing", "rmp-serde", "rust-stemmers", "rust_decimal", @@ -634,6 +666,8 @@ dependencies = [ "serde_json", "serdect", "sha2", + "stack-auth", + "stack-profile", "static_assertions", "thiserror 1.0.69", "tokio", @@ -641,6 +675,8 @@ dependencies = [ "tracing", "url", "uuid", + "vitaminc", + "vitaminc-protected", "winnow 0.6.26", "zeroize", "zerokms-protocol", @@ -648,24 +684,26 @@ dependencies = [ [[package]] name = "cipherstash-config" -version = "0.2.5" +version = "0.34.1-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd94f7826557fa825161118a5b06d1ed60a66185e4f4d5766b9e5ae39669177" +checksum = "283fa04db19f9bf2cb2f09e8c1505a15560310bc50fdc066734072c616aa8ca9" dependencies = [ + "bitflags 2.11.1", "serde", + "serde_json", "thiserror 1.0.69", ] [[package]] name = "cipherstash-core" -version = "0.1.2" +version = "0.34.1-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd56dfac0a35146968ef6696fb822b22f70a664a8739874385876d5452844b7a" +checksum = "b5bb7181053c3fc35569e0800fa7510c85ee2bffee21abbd2a7aeb498f5f0972" dependencies = [ "hmac", "lazy_static", "num-bigint", - "rand 0.8.5", + "rand 0.8.6", "regex", "sha2", "thiserror 1.0.69", @@ -694,21 +732,19 @@ dependencies = [ [[package]] name = "cllw-ore" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61894ceda17ee0b19d2255a7813c878d283ef55c35ca6c6f64e7220cacc1f72f" +checksum = "5d007a5be83ae12adbd17543f9631d64090d761c029d2f8f7eb8f8ddb2a87caf" dependencies = [ - "bit-vec", - "bitvec", "blake3", + "chrono", "hex", - "postgres-derive", + "orderable-bytes", "postgres-types", - "regex", + "rust_decimal", "subtle", "thiserror 1.0.69", "unicode-normalization", - "vitaminc", ] [[package]] @@ -731,6 +767,16 @@ dependencies = [ "cc", ] +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "compression-codecs" version = "0.4.36" @@ -765,7 +811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "proptest", "serde_core", ] @@ -801,6 +847,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -816,6 +872,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "3.0.1" @@ -892,6 +957,12 @@ dependencies = [ "toml 0.5.11", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.8" @@ -967,9 +1038,9 @@ dependencies = [ [[package]] name = "cts-common" -version = "0.4.1" +version = "0.34.1-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1b0b629ef1939040e09625a0c70045650149f5b6be7bd0935fc0c4a50129b54" +checksum = "3b26644e630f2e690194c6b61f5b613b768061750f2060cf4db73ddb8058d284" dependencies = [ "arrayvec", "base32", @@ -981,7 +1052,9 @@ dependencies = [ "nom", "regex", "serde", + "serde_json", "thiserror 1.0.69", + "tracing", "url", "utoipa", "uuid", @@ -1023,6 +1096,12 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "data-encoding" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" + [[package]] name = "dbbenches" version = "0.1.0" @@ -1036,10 +1115,11 @@ dependencies = [ "hex", "hex-literal", "ore-rs 0.7.0", - "rand 0.8.5", + "rand 0.8.6", "serde", "serde_json", "sqlx", + "stack-profile", "tokio", ] @@ -1063,6 +1143,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -1189,6 +1278,18 @@ dependencies = [ "serde", ] +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -1202,7 +1303,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1241,7 +1342,7 @@ checksum = "2d391ba4af7f1d93f01fcf7b2f29e2bc9348e109dfdbf4dcbdc51dfa38dab0b6" dependencies = [ "deunicode", "dummy", - "rand 0.8.5", + "rand 0.8.6", "uuid", ] @@ -1373,9 +1474,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1383,9 +1484,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" @@ -1406,20 +1507,20 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.1", + "parking_lot", ] [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", @@ -1428,21 +1529,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -1452,10 +1553,24 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] +[[package]] +name = "generator" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1466,6 +1581,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30" +dependencies = [ + "rustix 0.38.44", + "windows-targets 0.52.6", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -1484,11 +1609,27 @@ name = "getrandom" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", + "rand_core 0.10.1", "wasip2", + "wasip3", ] [[package]] @@ -1593,6 +1734,52 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" +[[package]] +name = "hickory-proto" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand 0.9.2", + "ring", + "thiserror 2.0.18", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot", + "rand 0.9.2", + "resolv-conf", + "smallvec", + "thiserror 2.0.18", + "tokio", + "tracing", +] + [[package]] name = "hkdf" version = "0.12.3" @@ -1661,13 +1848,14 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "http", "http-body", "httparse", @@ -1680,16 +1868,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -1697,20 +1883,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ + "base64", "bytes", "futures-channel", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1820,6 +2009,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -1847,6 +2042,25 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -1886,9 +2100,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", ] [[package]] @@ -1902,12 +2113,44 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "ipconfig" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" +dependencies = [ + "socket2", + "widestring", + "windows-registry", + "windows-result", + "windows-sys 0.61.2", +] + [[package]] name = "ipnet" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + [[package]] name = "is_ci" version = "1.2.0" @@ -1938,6 +2181,55 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.114", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.114", +] + [[package]] name = "jobserver" version = "0.1.34" @@ -1959,14 +2251,35 @@ dependencies = [ ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "jsonwebtoken" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +dependencies = [ + "base64", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ "spin 0.5.2", ] +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.180" @@ -1985,7 +2298,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "libc", "redox_syscall 0.7.0", ] @@ -2006,6 +2319,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -2034,6 +2353,40 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f926ade0c4e170215ae43342bf13b9310a437609c81f29f86c5df6657582ef9" + [[package]] name = "md-5" version = "0.10.5" @@ -2088,12 +2441,6 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2115,6 +2462,25 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom", + "parking_lot", + "portable-atomic", + "rustc_version", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", +] + [[package]] name = "native-tls" version = "0.2.11" @@ -2125,10 +2491,10 @@ dependencies = [ "libc", "log", "openssl", - "openssl-probe", + "openssl-probe 0.1.5", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.8.2", "security-framework-sys", "tempfile", ] @@ -2142,6 +2508,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "num" version = "0.4.0" @@ -2178,7 +2553,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "smallvec", "zeroize", ] @@ -2192,6 +2567,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + [[package]] name = "num-integer" version = "0.1.45" @@ -2259,6 +2640,10 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "oorandom" @@ -2282,13 +2667,24 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "open" +version = "5.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fbaa89d2ddc8473c78a3adf69eea8cffa28c483b8e02a971ef31527cd0fc92c" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + [[package]] name = "openssl" version = "0.10.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38c4372413cdaaf3cc79dd92d29d7d9f5ab09b51b10dded508fb90bb70b9222" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "cfg-if", "foreign-types", "libc", @@ -2314,6 +2710,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + [[package]] name = "openssl-sys" version = "0.9.114" @@ -2326,6 +2728,16 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "orderable-bytes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adba0469737879cabc3bdcaa6a7beb4ff7f5bb4aa5d624816c8bb9d425a7d5df" +dependencies = [ + "chrono", + "rust_decimal", +] + [[package]] name = "ore-rs" version = "0.7.0" @@ -2333,13 +2745,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "969bed0f20e494e630c925f86a10e94de8f6ef31bef0d3ed13e6945e9cf6c566" dependencies = [ "aes", - "block-modes", + "block-modes 0.8.1", "byteorder", "hex", "hex-literal", "lazy_static", "num", - "rand 0.8.5", + "rand 0.8.6", "rand_chacha 0.3.1", "subtle-ng", "zeroize", @@ -2347,19 +2759,21 @@ dependencies = [ [[package]] name = "ore-rs" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17ced859adc3f4a6a80568b0b33519a496b00609b0be3b94d9dff136b5f3ec8" +checksum = "d77fb65718f1aba7bb7f568db90a2b17a48871d83cd9d1101d19fce449dd8dea" dependencies = [ "aes", - "block-modes", + "block-modes 0.9.1", "byteorder", + "chrono", "hex", - "hex-literal", "lazy_static", "num", - "rand 0.8.5", + "orderable-bytes", + "rand 0.8.6", "rand_chacha 0.3.1", + "rust_decimal", "subtle-ng", "thiserror 1.0.69", "zeroize", @@ -2383,17 +2797,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -2401,21 +2804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2437,6 +2826,16 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64", + "serde_core", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -2452,26 +2851,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2546,11 +2925,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "opaque-debug", "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + [[package]] name = "postgres-derive" version = "0.4.7" @@ -2603,12 +2988,28 @@ dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.114", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -2618,6 +3019,28 @@ dependencies = [ "toml_edit 0.23.10+spec-1.0.0", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "proc-macro2" version = "1.0.105" @@ -2633,7 +3056,7 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -2662,6 +3085,62 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.43" @@ -2677,6 +3156,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -2685,9 +3170,9 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -2704,6 +3189,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -2742,6 +3238,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2775,9 +3277,9 @@ dependencies = [ [[package]] name = "recipher" -version = "0.1.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72aa0940c8f5b753bfd3ed212d60896760579324c59194b7e51fcec35e5c1b0f" +checksum = "2b3561e1082283a4c064635b7886aa4d24db57a43ac31c55930c10797ab5cdeb" dependencies = [ "aes", "async-trait", @@ -2785,7 +3287,7 @@ dependencies = [ "hex", "hex-literal", "opaque-debug", - "rand 0.8.5", + "rand 0.8.6", "rand_chacha 0.3.1", "serde", "serde_cbor", @@ -2818,7 +3320,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] @@ -2872,31 +3374,30 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.4" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ - "async-compression", "base64", "bytes", "futures-core", "futures-util", + "hickory-resolver", "http", "http-body", "http-body-util", "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "once_cell", "percent-encoding", "pin-project-lite", + "quinn", "rustls", - "rustls-pemfile", "rustls-pki-types", + "rustls-platform-verifier", "serde", "serde_json", "serde_urlencoded", @@ -2904,61 +3405,81 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", - "webpki-roots 0.26.11", - "winreg", ] [[package]] name = "reqwest-middleware" -version = "0.3.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +checksum = "199dda04a536b532d0cc04d7979e39b1c763ea749bf91507017069c00b96056f" dependencies = [ "anyhow", "async-trait", "http", "reqwest", "serde", - "thiserror 1.0.69", + "thiserror 2.0.18", "tower-service", ] [[package]] name = "reqwest-retry" -version = "0.5.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f342894422862af74c50e1e9601cf0931accc9c6981e5eb413c46603b616b5" +checksum = "fe2412db2af7d2268e7a5406be0431f37d9eb67ff390f35b395716f5f06c2eaa" dependencies = [ "anyhow", "async-trait", - "chrono", "futures", "getrandom 0.2.17", "http", "hyper", - "parking_lot 0.11.2", "reqwest", "reqwest-middleware", "retry-policies", + "thiserror 2.0.18", "tokio", "tracing", - "wasm-timer", + "wasmtimer", ] [[package]] -name = "retry-policies" -version = "0.3.0" +name = "reqwest-tracing" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "493b4243e32d6eedd29f9a398896e35c6943a123b55eec97dcaee98310d25810" +checksum = "d5c1a1510677d43dce9e9c0c07fc5db8772c0e5a43e4f9cef75a11affa05a578" dependencies = [ "anyhow", - "chrono", - "rand 0.8.5", + "async-trait", + "getrandom 0.2.17", + "http", + "matchit", + "reqwest", + "reqwest-middleware", + "tracing", +] + +[[package]] +name = "resolv-conf" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" + +[[package]] +name = "retry-policies" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc05fbf560421a0357a750cbe78c7ca19d4923918490daabba313d5dbc871e47" +dependencies = [ + "rand 0.10.1", ] [[package]] @@ -3063,7 +3584,7 @@ dependencies = [ "borsh", "bytes", "num-traits", - "rand 0.8.5", + "rand 0.8.6", "rkyv", "serde", "serde_json", @@ -3075,6 +3596,12 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + [[package]] name = "rustc_version" version = "0.4.1" @@ -3098,27 +3625,40 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.11.1", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.52.0", +] + [[package]] name = "rustix" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ - "log", - "ring", + "aws-lc-rs", + "once_cell", "rustls-pki-types", "rustls-webpki", "subtle", @@ -3126,12 +3666,15 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-native-certs" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ + "openssl-probe 0.2.1", "rustls-pki-types", + "schannel", + "security-framework 3.7.0", ] [[package]] @@ -3140,15 +3683,44 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ + "web-time", "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework 3.7.0", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted 0.9.0", @@ -3184,6 +3756,12 @@ dependencies = [ "windows-sys 0.42.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.1.0" @@ -3203,7 +3781,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.3", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.11.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -3211,9 +3802,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3327,7 +3918,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -3344,10 +3935,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -3379,12 +3979,34 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + [[package]] name = "simdutf8" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +[[package]] +name = "simple_asn1" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror 2.0.18", + "time", +] + [[package]] name = "slab" version = "0.4.11" @@ -3397,17 +4019,7 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ - "serde", -] - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", + "serde", ] [[package]] @@ -3486,7 +4098,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", @@ -3539,7 +4151,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64", - "bitflags 2.10.0", + "bitflags 2.11.1", "byteorder", "bytes", "crc", @@ -3560,7 +4172,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.5", + "rand 0.8.6", "rsa", "serde", "sha1", @@ -3568,7 +4180,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -3581,7 +4193,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", - "bitflags 2.10.0", + "bitflags 2.11.1", "byteorder", "crc", "dotenvy", @@ -3598,14 +4210,14 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand 0.8.5", + "rand 0.8.6", "serde", "serde_json", "sha2", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "whoami", ] @@ -3629,7 +4241,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.17", + "thiserror 2.0.18", "tracing", "url", ] @@ -3640,6 +4252,46 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "stack-auth" +version = "0.34.1-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072e420b2bb179e7627f2e9e5ee4080d1f939c6710ecf91524d52fc87e40cbd0" +dependencies = [ + "aquamarine", + "cts-common", + "jsonwebtoken", + "miette", + "open 5.3.5", + "reqwest", + "serde", + "serde_json", + "stack-profile", + "thiserror 1.0.69", + "tokio", + "tracing", + "url", + "uuid", + "vitaminc", + "vitaminc-protected", + "zeroize", + "zerokms-protocol", +] + +[[package]] +name = "stack-profile" +version = "0.34.1-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd61bc4129d2258ec1ba89d742558308560fc0f585f9c24d478685def8efd14" +dependencies = [ + "dirs", + "gethostname", + "serde", + "serde_json", + "thiserror 1.0.69", + "uuid", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -3719,9 +4371,12 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -3734,6 +4389,12 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tap" version = "1.0.1" @@ -3784,11 +4445,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -3804,15 +4465,55 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", "syn 2.0.114", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.8.2" @@ -3857,10 +4558,10 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] @@ -3878,12 +4579,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] @@ -3900,16 +4600,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -3995,17 +4694,40 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" -version = "0.4.13" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51" dependencies = [ + "async-compression", + "bitflags 2.11.1", + "bytes", "futures-core", "futures-util", - "pin-project", + "http", + "http-body", + "http-body-util", "pin-project-lite", "tokio", + "tokio-util", + "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -4050,6 +4772,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -4196,6 +4948,42 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "validator" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43fb22e1a008ece370ce08a3e9e4447a910e92621bb49b85d6e48a45397e7cfa" +dependencies = [ + "idna", + "once_cell", + "regex", + "serde", + "serde_derive", + "serde_json", + "url", + "validator_derive", +] + +[[package]] +name = "validator_derive" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7df16e474ef958526d1205f6dda359fdfab79d9aa6d54bafcb92dcd07673dca" +dependencies = [ + "darling", + "once_cell", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" @@ -4210,10 +4998,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vitaminc" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f800bb9d02311571a8de172d63a4c9c10e07869089e3ddd84a8b05f3bef2d93" +checksum = "7c8b739a2cb1e528e77a69267728532f52d2d5ce18ae2839e26c797859fe9015" dependencies = [ + "vitaminc-aead", "vitaminc-encrypt", "vitaminc-protected", "vitaminc-random", @@ -4222,9 +5011,9 @@ dependencies = [ [[package]] name = "vitaminc-aead" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2b9f64cfbcc0c8d781e2a7d33beb183fd8f58735bed8c662286548042de820" +checksum = "7c29cef4d4b0d018c4223d366017d2a9756012acf76e25011aaca877f3c74904" dependencies = [ "bytes", "serde", @@ -4235,9 +5024,9 @@ dependencies = [ [[package]] name = "vitaminc-encrypt" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc871c8b8c61e5d2e4e097526e9cf7bc99913a45c23f31c2f6d5f1f2d0b8eec7" +checksum = "c4e3869aaf60ebb95ccbdfcf003985132325b4d1ac6f5d945ad2fbb9149afd3a" dependencies = [ "aws-lc-rs", "vitaminc-aead", @@ -4248,13 +5037,12 @@ dependencies = [ [[package]] name = "vitaminc-protected" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1af28bfb95686a7f5f95e845f99523ca8f7e3bf4a3c82f90554965ddf52e451" +checksum = "af693c39d3cd1c818ef6267539433c6ceca87840b12d24124adbc9c8ecba1709" dependencies = [ "bitvec", "digest", - "opaque-debug", "serde", "serde_bytes", "subtle", @@ -4264,9 +5052,9 @@ dependencies = [ [[package]] name = "vitaminc-protected-derive" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c9713b5849b9ba2260d1e36fc956909c7832b69365ce15d29895e9257676c77" +checksum = "e74520596b66eec546ef18d5376f6f18cdaf874caca9fa39e03eb12f9abb76fa" dependencies = [ "proc-macro2", "quote", @@ -4275,13 +5063,12 @@ dependencies = [ [[package]] name = "vitaminc-random" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed841b58f676dc55a49d65284c91a2da2b71e57508c646a77c91f4dd31eb96" +checksum = "ea9de431cb93359d293ec7e70d05d87117a57f34bfc5bc94f040b81d4dd1afd6" dependencies = [ - "rand 0.8.5", - "rand_chacha 0.3.1", - "thiserror 1.0.69", + "rand 0.10.1", + "thiserror 2.0.18", "vitaminc-protected", "vitaminc-random-derives", "zeroize", @@ -4289,9 +5076,9 @@ dependencies = [ [[package]] name = "vitaminc-random-derives" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172cdde4c52be52584990097655de39d835e9bcca5593c2b3517c8978ac87e89" +checksum = "49d33ac4682235551d25c874525c20e03d4c863b39f556391f52f7a2083bfbdf" dependencies = [ "proc-macro2", "quote", @@ -4300,15 +5087,15 @@ dependencies = [ [[package]] name = "vitaminc-traits" -version = "0.1.0-pre4" +version = "0.1.0-pre4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb63364ce6b2a33176d2a1aba75d6b77d982518654e84192419d18b8c97f36b5" +checksum = "c25a9e51d24c3befddd71e907dd4ae9f21cfbaae065fb0ef5202e5d21cd198d0" dependencies = [ "anyhow", "bytes", "rmp-serde", "serde", - "thiserror 1.0.69", + "thiserror 2.0.18", "vitaminc-protected", "vitaminc-random", "zeroize", @@ -4348,6 +5135,15 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasite" version = "0.1.0" @@ -4369,12 +5165,14 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] @@ -4412,54 +5210,91 @@ dependencies = [ ] [[package]] -name = "wasm-timer" -version = "0.2.5" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ - "futures", + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", "js-sys", - "parking_lot 0.11.2", - "pin-utils", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", ] [[package]] -name = "web-sys" -version = "0.3.61" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver", +] + +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", "js-sys", + "parking_lot", + "pin-utils", + "slab", "wasm-bindgen", ] [[package]] -name = "web-time" -version = "1.1.0" +name = "web-sys" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki-roots" -version = "0.26.11" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "webpki-roots 1.0.5", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "webpki-roots" -version = "1.0.5" +name = "webpki-root-certs" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" dependencies = [ "rustls-pki-types", ] @@ -4474,6 +5309,12 @@ dependencies = [ "wasite", ] +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + [[package]] name = "winapi" version = "0.3.9" @@ -4546,6 +5387,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.4.1" @@ -4886,20 +5738,92 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.52.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "wit-bindgen-rust-macro", ] [[package]] -name = "wit-bindgen" +name = "wit-bindgen-core" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.114", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.114", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" @@ -5002,22 +5926,23 @@ dependencies = [ [[package]] name = "zerokms-protocol" -version = "0.9.1" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe46b7fa449d5d14d9941ca83e3e92faa44e5f15ffb4b8fcc71158571279b7" +checksum = "0a2f045e2ee975a3d448419245c4621ea8844d2a004c63a96277181dc7cf8483" dependencies = [ - "async-trait", "base64", "cipherstash-config", "const-hex", "cts-common", "fake 2.10.0", "opaque-debug", - "rand 0.8.5", + "rand 0.8.6", "serde", "static_assertions", "thiserror 1.0.69", + "utoipa", "uuid", + "validator", "zeroize", ] diff --git a/Cargo.toml b/Cargo.toml index 261120c..7b89f07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,8 @@ ore-rs = "0.7.0" hex = "0.4.3" hex-literal = "0.3.4" rand = "0.8.5" -cipherstash-client = { version = "0.32.2", features = ["tokio"] } +cipherstash-client = { version = "0.34.1-alpha.4", features = ["tokio"] } +stack-profile = "0.34.1-alpha.4" anyhow = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -47,4 +48,8 @@ harness = false [[bench]] name = "exact" +harness = false + +[[bench]] +name = "group_by" harness = false \ No newline at end of file diff --git a/README_REPORT.md b/README_REPORT.md index 132ecc0..bc1fb1f 100644 --- a/README_REPORT.md +++ b/README_REPORT.md @@ -200,12 +200,6 @@ string_encrypted_10000_gin_index ON string_encrypted_10000 USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_10000_eql_index -ON string_encrypted_10000 ( - value eql_v2.encrypted_operator_class -); ``` ## Customization diff --git a/benches/exact.rs b/benches/exact.rs index f7d9ec7..4f7e36b 100644 --- a/benches/exact.rs +++ b/benches/exact.rs @@ -1,8 +1,8 @@ use cipherstash_client::{ - credentials::ServiceCredentials, encryption::ScopedCipher, eql::Identifier, schema::{column::Index, ColumnConfig, ColumnType}, + AutoStrategy, }; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use dbbenches::{init_scoped_cipher, EncryptedQuery, EncryptedQueryBuilder}; @@ -16,13 +16,13 @@ static QUERY_TEMPLATES: &[(&str, &str, &str)] = &[ ]; async fn build_query( - cipher: Arc>, + cipher: Arc>, query: &str, x: &str, table_name: &str, ) -> EncryptedQuery { let column_config = ColumnConfig::build("value") - .casts_as(ColumnType::Utf8Str) + .casts_as(ColumnType::Text) .add_index(Index::new_unique()); let identifier = Identifier::new(table_name, "value"); diff --git a/benches/group_by.rs b/benches/group_by.rs new file mode 100644 index 0000000..474b2c2 --- /dev/null +++ b/benches/group_by.rs @@ -0,0 +1,85 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use sqlx::postgres::PgPoolOptions; +use sqlx::Row; +use tokio::runtime::Runtime; + +// Two flavours of the same GROUP BY against the string_encrypted_* tables: +// +// 1. "eql_cast" — natural form: `GROUP BY value`. The hash discriminator for +// aggregation is provided by `eql_v2.hash_encrypted`, which is a plpgsql +// function called once per row. Not inlinable. +// +// 2. "hmac_extractor" — explicit form: `GROUP BY eql_v2.hmac_256(value)`. The +// extractor is an inlinable single-statement SQL function (post 2.3), so the +// planner folds the body — `(val).data ->> 'hm'` — into the aggregation. +// +// PostgreSQL builds an in-memory hash table for GROUP BY in both cases (the +// functional hash index on `eql_v2.hmac_256(value)` is only useful for +// equality lookups, not aggregation), so this is really a comparison of +// per-row hashing cost: plpgsql function call vs. inlined SQL. +static QUERY_TEMPLATES: &[(&str, &str)] = &[ + ( + "SELECT count(*) FROM {TABLE} GROUP BY value", + "eql_cast", + ), + ( + "SELECT count(*) FROM {TABLE} GROUP BY eql_v2.hmac_256(value)", + "hmac_extractor", + ), +]; + +fn criterion_benchmark(c: &mut Criterion) { + let rt = Runtime::new().unwrap(); + + let target_rows = std::env::var("TARGET_ROWS") + .unwrap_or_else(|_| "unknown".to_string()); + + let table_suffix = match target_rows.as_str() { + "10000" | "100000" | "1000000" | "10000000" => format!("_{}", target_rows), + _ => String::new(), + }; + let table_name = format!("string_encrypted{}", table_suffix); + + let pool = rt.block_on(async { + let database_url = + std::env::var("DATABASE_URL").expect("DATABASE_URL environment variable must be set"); + + PgPoolOptions::new() + .max_connections(5) + .connect(&database_url) + .await + .expect("Failed to connect to database") + }); + + let mut group = c.benchmark_group("GROUP_BY"); + group.sample_size(10); + // The natural-form `GROUP BY value` scenario calls `eql_v2.hash_encrypted` + // (plpgsql, per row) for the hash discriminator. At 10k rows that's + // ~3.5 s per iteration; at 100k+ it scales roughly linearly. Criterion's + // default 5 s `measurement_time` can't fit a single sample. Extend so + // even the slow scenarios get the criterion-minimum 10 samples without + // a "Unable to complete 10 samples" warning. Inflated for headroom at + // 1M rows. + group.warm_up_time(std::time::Duration::from_secs(5)); + group.measurement_time(std::time::Duration::from_secs(60)); + + for (query_template, scenario) in QUERY_TEMPLATES { + let query_str = query_template.replace("{TABLE}", &table_name); + + group.bench_function(format!("group_by/{}/{}", scenario, target_rows), |b| { + b.to_async(&rt).iter(|| async { + let rows = sqlx::query(&query_str) + .fetch_all(&pool) + .await + .expect("group_by query failed"); + // Drain the result to force the aggregation to materialise. + black_box(rows.iter().map(|r| r.get::(0)).sum::()) + }) + }); + } + + group.finish(); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/benches/match.rs b/benches/match.rs index cea485f..1792aae 100644 --- a/benches/match.rs +++ b/benches/match.rs @@ -1,8 +1,8 @@ use cipherstash_client::{ - credentials::ServiceCredentials, encryption::ScopedCipher, eql::Identifier, schema::{column::Index, ColumnConfig, ColumnType}, + AutoStrategy, }; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use dbbenches::{init_scoped_cipher, EncryptedQuery, EncryptedQueryBuilder}; @@ -17,13 +17,13 @@ static QUERY_TEMPLATES: &[(&str, &str, &str)] = &[ ]; async fn build_query( - cipher: Arc>, + cipher: Arc>, query: &str, x: &str, table_name: &str, ) -> EncryptedQuery { let column_config = ColumnConfig::build("value") - .casts_as(ColumnType::Utf8Str) + .casts_as(ColumnType::Text) .add_index(Index::new_match()); let identifier = Identifier::new(table_name, "value"); diff --git a/benches/ore.rs b/benches/ore.rs index 7995655..bc4e8cb 100644 --- a/benches/ore.rs +++ b/benches/ore.rs @@ -1,11 +1,11 @@ use cipherstash_client::{ - credentials::ServiceCredentials, encryption::ScopedCipher, eql::Identifier, schema::{ column::{Index, IndexType}, ColumnConfig, ColumnType, }, + AutoStrategy, }; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use dbbenches::{init_scoped_cipher, EncryptedQuery, EncryptedQueryBuilder}; @@ -13,12 +13,37 @@ use sqlx::postgres::PgPoolOptions; use std::sync::Arc; use tokio::runtime::Runtime; +// Post-EQL-2.3 (with the `<` / `<=` / `>` / `>=` operator inlining), bare-form +// range predicates on `eql_v2_encrypted` reduce to +// `eql_v2.ore_block_u64_8_256(a) eql_v2.ore_block_u64_8_256(b)` and +// structurally match a functional btree index on +// `eql_v2.ore_block_u64_8_256(value)` — so the natural-form scenarios below +// engage the index without rewriting. +// +// The ordered scenarios show three plan shapes side-by-side: +// +// range_lt_ordered_10 — natural form: WHERE val < $1 ORDER BY val LIMIT 10 +// → Bitmap Index Scan via the inlined `<`, plus +// a Top-N sort by `val` (the natural-form sort +// key doesn't match the index expression +// syntactically). Each comparison in the Sort +// step uses the inlined ORE-term path, so the +// Top-N is fast. +// +// range_lt_hybrid_ordered_10 — natural WHERE, extractor ORDER BY: +// ORDER BY eql_v2.ore_block_u64_8_256(val). +// The sort key matches the index expression → +// plain ordered Index Scan, no Sort node. +// +// range_lt_ore_ordered_10 — fully extractor on both clauses. After the `<` +// inlining the WHERE reduces to the same shape +// as the hybrid, so the plan is identical to +// hybrid. Kept for contrast / regression. +// +// The equality scenario from the previous bench (`WHERE value = $1`) is gone: +// the integer column carries only `ob`, not `hm`, so post-2.3 equality returns +// NULL → zero rows. See exact.rs for the meaningful equality benches. static QUERY_TEMPLATES: &[(&str, i32, &str)] = &[ - ( - "SELECT value FROM {TABLE} WHERE value = $1 LIMIT 1", - 5000, - "exact", - ), ( "SELECT id,value::jsonb FROM {TABLE} WHERE value > $1 LIMIT 10", 5000, @@ -44,10 +69,24 @@ static QUERY_TEMPLATES: &[(&str, i32, &str)] = &[ 5000, "range_lt_ordered_10", ), + ( + "SELECT id,value::jsonb FROM {TABLE} \ + WHERE value < $1 \ + ORDER BY eql_v2.ore_block_u64_8_256(value) LIMIT 10", + 5000, + "range_lt_hybrid_ordered_10", + ), + ( + "SELECT id,value::jsonb FROM {TABLE} \ + WHERE eql_v2.ore_block_u64_8_256(value) < eql_v2.ore_block_u64_8_256($1::jsonb) \ + ORDER BY eql_v2.ore_block_u64_8_256(value) LIMIT 10", + 5000, + "range_lt_ore_ordered_10", + ), ]; async fn build_query( - cipher: Arc>, + cipher: Arc>, query: &str, x: i32, table_name: &str, @@ -108,10 +147,21 @@ fn criterion_benchmark(c: &mut Criterion) { let mut group = c.benchmark_group("ORE"); group.sample_size(10); + // Some scenarios — notably the natural-form `WHERE val < $1 ORDER BY val + // LIMIT 10` — finish a single iteration in several hundred milliseconds + // because the Top-N sort runs over the post-WHERE bitmap rather than + // streaming from an ordered index (see U-005 in EQL's v2.3 upgrade + // notes). Criterion's default 5 s `measurement_time` only fits a few + // such samples, yielding very wide confidence intervals and false + // "regressed" alerts against any stored baseline. 30 s gives the slow + // scenarios room to settle while leaving fast ones (sub-ms to single + // ms) plenty of headroom. + group.warm_up_time(std::time::Duration::from_secs(5)); + group.measurement_time(std::time::Duration::from_secs(30)); for (i, query) in queries.into_iter().enumerate() { let (_, _, scenario) = QUERY_TEMPLATES[i]; - + group.bench_function(format!("ore/{}/{}", scenario, target_rows), |b| { b.to_async(&rt).iter(|| async { let _: Vec<_> = query.execute(&pool).await.unwrap(); diff --git a/mise.toml b/mise.toml index 1d23fba..b2f0909 100644 --- a/mise.toml +++ b/mise.toml @@ -2,6 +2,9 @@ python = "latest" rust = "latest" +[env] +DATABASE_URL = "postgres://postgres:postgres@localhost:5400/postgres" + [tasks.postgres] description = "Start PostgreSQL via Docker Compose" run = "docker compose up -d postgres" @@ -201,7 +204,7 @@ echo "Preparing integer_encrypted table with $TARGET_ROWS rows..." mise run prepare:integer_encrypted "$TARGET_ROWS" echo "Cleaning old benchmark data..." -rm -rf target/criterion/ORE +rm -rf target/criterion/data/main/ORE target/criterion/reports/ORE echo "Running ORE query benchmark..." mkdir -p results/query @@ -234,7 +237,7 @@ echo "Preparing string_encrypted table with $TARGET_ROWS rows..." mise run prepare:string_encrypted "$TARGET_ROWS" echo "Cleaning old benchmark data..." -rm -rf target/criterion/MATCH +rm -rf target/criterion/data/main/MATCH target/criterion/reports/MATCH echo "Running MATCH query benchmark..." mkdir -p results/query @@ -267,7 +270,7 @@ echo "Preparing string_encrypted table with $TARGET_ROWS rows..." mise run prepare:string_encrypted "$TARGET_ROWS" echo "Cleaning old benchmark data..." -rm -rf target/criterion/EXACT +rm -rf target/criterion/data/main/EXACT target/criterion/reports/EXACT echo "Running EXACT query benchmark..." mkdir -p results/query @@ -277,6 +280,39 @@ TARGET_ROWS="$TARGET_ROWS" cargo criterion --bench exact --message-format json > echo "Benchmark complete! Results written to $OUTPUT_FILE" """ +[tasks."bench:query:group_by"] +description = "Run GROUP BY query benchmark" +run = """ +#!/usr/bin/env bash +set -e + +TARGET_ROWS="$1" + +if [ -z "$TARGET_ROWS" ]; then + echo "Error: target row count argument required" + echo "Usage: mise run bench:query:group_by " + exit 1 +fi + +if ! [[ "$TARGET_ROWS" =~ ^[0-9]+$ ]]; then + echo "Error: target row count must be a positive integer" + exit 1 +fi + +echo "Preparing string_encrypted table with $TARGET_ROWS rows..." +mise run prepare:string_encrypted "$TARGET_ROWS" + +echo "Cleaning old benchmark data..." +rm -rf target/criterion/data/main/GROUP_BY target/criterion/reports/GROUP_BY + +echo "Running GROUP BY query benchmark..." +mkdir -p results/query +OUTPUT_FILE="results/query/group_by_rows_${TARGET_ROWS}.json" +TARGET_ROWS="$TARGET_ROWS" cargo criterion --bench group_by --message-format json > "$OUTPUT_FILE" + +echo "Benchmark complete! Results written to $OUTPUT_FILE" +""" + [tasks."bench:query:all"] description = "Run all query benchmarks with multiple row counts (10k, 100k, 1M, 10M)" run = """ @@ -288,7 +324,7 @@ ROW_COUNTS=(10000 100000 1000000 10000000) echo "========================================" echo "Starting comprehensive benchmark suite" echo "Row counts: ${ROW_COUNTS[*]}" -echo "Benchmarks: exact, match, ore" +echo "Benchmarks: exact, match, ore, group_by" echo "========================================" echo "" @@ -299,19 +335,23 @@ for ROWS in "${ROW_COUNTS[@]}"; do echo "Running benchmarks with $ROWS rows" echo "========================================" echo "" - - echo "[1/3] Running EXACT benchmark with $ROWS rows..." + + echo "[1/4] Running EXACT benchmark with $ROWS rows..." mise run bench:query:exact "$ROWS" echo "" - - echo "[2/3] Running MATCH benchmark with $ROWS rows..." + + echo "[2/4] Running MATCH benchmark with $ROWS rows..." mise run bench:query:match "$ROWS" echo "" - - echo "[3/3] Running ORE benchmark with $ROWS rows..." + + echo "[3/4] Running ORE benchmark with $ROWS rows..." mise run bench:query:ore "$ROWS" echo "" - + + echo "[4/4] Running GROUP BY benchmark with $ROWS rows..." + mise run bench:query:group_by "$ROWS" + echo "" + echo "Completed benchmarks for $ROWS rows" echo "" done diff --git a/report/BENCHMARK_REPORT.md b/report/BENCHMARK_REPORT.md index 6f22926..558c516 100644 --- a/report/BENCHMARK_REPORT.md +++ b/report/BENCHMARK_REPORT.md @@ -96,9 +96,9 @@ ON string_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | ⚠️ 119.93ms | ⚠️ 122.15ms | -| 100,000 | ⚠️ 1.669s | ⚠️ 787.01ms | -| 1,000,000 | ⚠️ 7.827s | ⚠️ 7.836s | +| 10,000 | 422.00μs | 415.23μs | +| 100,000 | 400.64μs | 427.65μs | +| 1,000,000 | ⚠️ 8.012s | ⚠️ 8.012s | ![Query Performance - EXACT/eql_cast](query_exact_eql_cast_chart.png) @@ -138,9 +138,9 @@ ON string_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 410.44μs | 414.48μs | -| 100,000 | 395.17μs | 395.38μs | -| 1,000,000 | 399.96μs | 404.21μs | +| 10,000 | 393.98μs | 397.50μs | +| 100,000 | 392.83μs | 404.50μs | +| 1,000,000 | 401.06μs | 408.97μs | ![Query Performance - EXACT/eql_hash](query_exact_eql_hash_chart.png) @@ -182,9 +182,8 @@ ON string_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 930.90μs | 63.38ms | -| 100,000 | 3.35ms | 68.21ms | -| 1,000,000 | 21.23ms | 83.97ms | +| 10,000 | 1.07ms | 28.26ms | +| 1,000,000 | 17.53ms | 42.35ms | ![Query Performance - MATCH/eql_bloom](query_match_eql_bloom_chart.png) @@ -226,9 +225,8 @@ ON string_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | ⚠️ 263.49ms | ⚠️ 321.93ms | -| 100,000 | ⚠️ 341.72ms | ⚠️ 401.96ms | -| 1,000,000 | ⚠️ 399.14ms | ⚠️ 450.21ms | +| 10,000 | 751.37μs | 27.53ms | +| 1,000,000 | ⚠️ 386.64ms | ⚠️ 418.49ms | ![Query Performance - MATCH/eql_cast_firstname](query_match_eql_cast_firstname_chart.png) @@ -270,9 +268,8 @@ ON string_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | ⚠️ 146.33ms | ⚠️ 205.98ms | -| 100,000 | ⚠️ 119.51ms | ⚠️ 177.16ms | -| 1,000,000 | ⚠️ 127.20ms | ⚠️ 190.63ms | +| 10,000 | 1.25ms | 30.30ms | +| 1,000,000 | ⚠️ 132.59ms | ⚠️ 157.06ms | ![Query Performance - MATCH/eql_cast_lastname](query_match_eql_cast_lastname_chart.png) @@ -304,9 +301,8 @@ ON integer_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | ⚠️ 276.65ms | ⚠️ 276.72ms | -| 100,000 | ⚠️ 1.858s | ⚠️ 1.868s | -| 1,000,000 | ⚠️ 18.466s | ⚠️ 18.618s | +| 10,000 | 464.23μs | 495.74μs | +| 100,000 | ⚠️ 1.905s | ⚠️ 1.901s | ![Query Performance - ORE/exact](query_ore_exact_chart.png) @@ -334,9 +330,8 @@ ON integer_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 2.23ms | 60.19ms | -| 100,000 | 1.78ms | 63.88ms | -| 1,000,000 | 1.88ms | 66.87ms | +| 10,000 | 2.39ms | 29.57ms | +| 100,000 | 1.53ms | 27.97ms | ![Query Performance - ORE/range_gt_10](query_ore_range_gt_10_chart.png) @@ -362,13 +357,10 @@ ON integer_encrypted_10000 ( ); ``` -*⚠️ = Query time exceeds 100ms* - | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 13.67ms | ⚠️ 115.66ms | -| 100,000 | 12.56ms | ⚠️ 124.67ms | -| 1,000,000 | 13.08ms | ⚠️ 110.90ms | +| 10,000 | 14.33ms | 51.92ms | +| 100,000 | 12.35ms | 52.45ms | ![Query Performance - ORE/range_gt_100](query_ore_range_gt_100_chart.png) @@ -396,9 +388,8 @@ ON integer_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 1.92ms | 61.12ms | -| 100,000 | 1.93ms | 70.41ms | -| 1,000,000 | 2.56ms | 61.29ms | +| 10,000 | 2.71ms | 27.30ms | +| 100,000 | 1.66ms | 28.69ms | ![Query Performance - ORE/range_lt_10](query_ore_range_lt_10_chart.png) @@ -424,13 +415,10 @@ ON integer_encrypted_10000 ( ); ``` -*⚠️ = Query time exceeds 100ms* - | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | 10.82ms | ⚠️ 114.77ms | -| 100,000 | 12.85ms | ⚠️ 133.00ms | -| 1,000,000 | 12.27ms | ⚠️ 118.33ms | +| 10,000 | 14.85ms | 53.07ms | +| 100,000 | 12.49ms | 52.96ms | ![Query Performance - ORE/range_lt_100](query_ore_range_lt_100_chart.png) @@ -460,9 +448,8 @@ ON integer_encrypted_10000 ( | Data Set Size | Query Time (no decrypt) | Query Time (with decrypt) | |---------------|-------------------------|---------------------------| -| 10,000 | ⚠️ 542.65ms | ⚠️ 597.87ms | -| 100,000 | ⚠️ 5.422s | ⚠️ 5.483s | -| 1,000,000 | ⚠️ 62.364s | ⚠️ 66.031s | +| 10,000 | ⚠️ 633.49ms | ⚠️ 655.54ms | +| 100,000 | ⚠️ 5.453s | ⚠️ 5.495s | ![Query Performance - ORE/range_lt_ordered_10](query_ore_range_lt_ordered_10_chart.png) diff --git a/report/query_exact_eql_cast_chart.png b/report/query_exact_eql_cast_chart.png index 904be8c..5d82364 100644 Binary files a/report/query_exact_eql_cast_chart.png and b/report/query_exact_eql_cast_chart.png differ diff --git a/report/query_exact_eql_hash_chart.png b/report/query_exact_eql_hash_chart.png index 6c7e069..b957900 100644 Binary files a/report/query_exact_eql_hash_chart.png and b/report/query_exact_eql_hash_chart.png differ diff --git a/report/query_match_eql_bloom_chart.png b/report/query_match_eql_bloom_chart.png index 1702819..5883abf 100644 Binary files a/report/query_match_eql_bloom_chart.png and b/report/query_match_eql_bloom_chart.png differ diff --git a/report/query_match_eql_cast_firstname_chart.png b/report/query_match_eql_cast_firstname_chart.png index 4559f33..ff36eed 100644 Binary files a/report/query_match_eql_cast_firstname_chart.png and b/report/query_match_eql_cast_firstname_chart.png differ diff --git a/report/query_match_eql_cast_lastname_chart.png b/report/query_match_eql_cast_lastname_chart.png index 4c8e606..d66ed14 100644 Binary files a/report/query_match_eql_cast_lastname_chart.png and b/report/query_match_eql_cast_lastname_chart.png differ diff --git a/report/query_ore_exact_chart.png b/report/query_ore_exact_chart.png index 36d4b4f..343cd2f 100644 Binary files a/report/query_ore_exact_chart.png and b/report/query_ore_exact_chart.png differ diff --git a/report/query_ore_range_gt_100_chart.png b/report/query_ore_range_gt_100_chart.png index 87b11db..2603098 100644 Binary files a/report/query_ore_range_gt_100_chart.png and b/report/query_ore_range_gt_100_chart.png differ diff --git a/report/query_ore_range_gt_10_chart.png b/report/query_ore_range_gt_10_chart.png index 95ab307..63c8a2d 100644 Binary files a/report/query_ore_range_gt_10_chart.png and b/report/query_ore_range_gt_10_chart.png differ diff --git a/report/query_ore_range_lt_100_chart.png b/report/query_ore_range_lt_100_chart.png index 81e51e9..76f36b4 100644 Binary files a/report/query_ore_range_lt_100_chart.png and b/report/query_ore_range_lt_100_chart.png differ diff --git a/report/query_ore_range_lt_10_chart.png b/report/query_ore_range_lt_10_chart.png index ee42aaa..a5e5de7 100644 Binary files a/report/query_ore_range_lt_10_chart.png and b/report/query_ore_range_lt_10_chart.png differ diff --git a/report/query_ore_range_lt_ordered_10_chart.png b/report/query_ore_range_lt_ordered_10_chart.png index 144b097..8d1de44 100644 Binary files a/report/query_ore_range_lt_ordered_10_chart.png and b/report/query_ore_range_lt_ordered_10_chart.png differ diff --git a/results/query/exact_rows_10000.json b/results/query/exact_rows_10000.json index 9cd7f03..61a7c24 100644 --- a/results/query/exact_rows_10000.json +++ b/results/query/exact_rows_10000.json @@ -1,5 +1,5 @@ -{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_cast_10000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[118826833.0,238982750.0,359795292.0,483753333.0,597647083.0,724623417.0,840462584.0,955748750.0,1083499625.0,1199220292.0],"unit":"ns","throughput":[],"typical":{"estimate":120052195.04155844,"lower_bound":119747021.46097562,"upper_bound":120382362.11947724,"unit":"ns"},"mean":{"estimate":119933384.49507937,"lower_bound":119556215.01785715,"upper_bound":120316607.24238889,"unit":"ns"},"median":{"estimate":119926896.6,"lower_bound":119491375.0,"upper_bound":120418326.46428572,"unit":"ns"},"median_abs_dev":{"estimate":662592.0530216307,"lower_bound":56400.475158682566,"upper_bound":1089517.8720071912,"unit":"ns"},"slope":{"estimate":120052195.04155844,"lower_bound":119747021.46097562,"upper_bound":120382362.11947724,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_10000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[120773334.0,251015541.0,380783666.0,503314667.0,616267750.0,726498292.0,835808083.0,961445416.0,1074176667.0,1191531042.0],"unit":"ns","throughput":[],"typical":{"estimate":120373669.91168831,"lower_bound":119626541.17181467,"upper_bound":122123286.66824645,"unit":"ns"},"mean":{"estimate":122146215.74976191,"lower_bound":120479997.54476193,"upper_bound":123964555.810625,"unit":"ns"},"median":{"estimate":120928191.33333334,"lower_bound":119401154.71428572,"upper_bound":125507770.5,"unit":"ns"},"median_abs_dev":{"estimate":2483588.811347497,"lower_bound":237880.38590177894,"upper_bound":4570660.200979549,"unit":"ns"},"slope":{"estimate":120373669.91168831,"lower_bound":119626541.17181467,"upper_bound":122123286.66824645,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_hash_10000","iteration_count":[219,438,657,876,1095,1314,1533,1752,1971,2190],"measured_values":[85865417.0,179477334.0,270862542.0,354126958.0,443473708.0,548717750.0,643415292.0,720024209.0,837525042.0,893248375.0],"unit":"ns","throughput":[],"typical":{"estimate":414136.27974856197,"lower_bound":408610.4492960426,"upper_bound":420140.90834268136,"unit":"ns"},"mean":{"estimate":410444.61613883456,"lower_bound":404866.79594748863,"upper_bound":415700.971950424,"unit":"ns"},"median":{"estimate":410369.16238584474,"lower_bound":404998.8200913242,"upper_bound":417593.4170471842,"unit":"ns"},"median_abs_dev":{"estimate":8513.82027867822,"lower_bound":1857.8094697570023,"upper_bound":15813.251868836272,"unit":"ns"},"slope":{"estimate":414136.27974856197,"lower_bound":408610.4492960426,"upper_bound":420140.90834268136,"unit":"ns"},"change":null} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_10000","iteration_count":[214,428,642,856,1070,1284,1498,1712,1926,2140],"measured_values":[93314667.0,182802958.0,256688167.0,355292458.0,458942875.0,506505375.0,614097875.0,709556250.0,790326250.0,874334542.0],"unit":"ns","throughput":[],"typical":{"estimate":410429.8863454303,"lower_bound":405808.2088070459,"upper_bound":415510.32154488814,"unit":"ns"},"mean":{"estimate":414475.88851320284,"lower_bound":406924.0893602582,"upper_bound":422211.6244193647,"unit":"ns"},"median":{"estimate":412403.1752985462,"lower_bound":404885.4910992434,"upper_bound":427109.71495327103,"unit":"ns"},"median_abs_dev":{"estimate":12166.958396758124,"lower_bound":1318.3139635423447,"upper_bound":23122.229268540406,"unit":"ns"},"slope":{"estimate":410429.8863454303,"lower_bound":405808.2088070459,"upper_bound":415510.32154488814,"unit":"ns"},"change":null} -{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact/eql_cast/10000","EXACT/exact_decrypt/eql_cast/10000","EXACT/exact/eql_hash/10000","EXACT/exact_decrypt/eql_hash/10000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT"} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_cast_10000","iteration_count":[208,416,624,832,1040,1248,1456,1664,1872,2080],"measured_values":[90136125.0,177061708.0,277471041.0,347643000.0,440986500.0,523136167.0,599694959.0,697944208.0,782574417.0,862956500.0],"unit":"ns","throughput":[],"typical":{"estimate":417896.44475524477,"lower_bound":415600.3899663456,"upper_bound":421721.40603252273,"unit":"ns"},"mean":{"estimate":422892.7089400183,"lower_bound":417792.3236950549,"upper_bound":429038.6276098901,"unit":"ns"},"median":{"estimate":419308.6229967949,"lower_bound":416462.4110576923,"upper_bound":428686.1177884615,"unit":"ns"},"median_abs_dev":{"estimate":6777.370769100684,"lower_bound":992.9541066504212,"upper_bound":14608.275450266608,"unit":"ns"},"slope":{"estimate":417896.44475524477,"lower_bound":415600.3899663456,"upper_bound":421721.40603252273,"unit":"ns"},"change":{"mean":{"estimate":-0.07175388180360132,"lower_bound":-0.09815735360157866,"upper_bound":-0.04219930201730728,"unit":"%"},"median":{"estimate":-0.09055110044831072,"lower_bound":-0.10480369121200861,"upper_bound":-0.04237911841429509,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_10000","iteration_count":[203,406,609,812,1015,1218,1421,1624,1827,2030],"measured_values":[94865791.0,176606584.0,258618416.0,334995709.0,419629459.0,517907875.0,603494042.0,699001333.0,782854416.0,835196125.0],"unit":"ns","throughput":[],"typical":{"estimate":422028.424796878,"lower_bound":415371.52842421154,"upper_bound":427960.9524024873,"unit":"ns"},"mean":{"estimate":427320.22540874965,"lower_bound":419085.9189514426,"upper_bound":437835.01490147784,"unit":"ns"},"median":{"estimate":424954.2210297912,"lower_bound":413428.0384236453,"upper_bound":431741.66502463055,"unit":"ns"},"median_abs_dev":{"estimate":11492.139572636332,"lower_bound":435.053277251628,"upper_bound":20900.81046672519,"unit":"ns"},"slope":{"estimate":422028.424796878,"lower_bound":415371.52842421154,"upper_bound":427960.9524024873,"unit":"ns"},"change":{"mean":{"estimate":-0.06496087032072162,"lower_bound":-0.12209036207440671,"upper_bound":-0.0002637463651535696,"unit":"%"},"median":{"estimate":-0.06552222647720707,"lower_bound":-0.15749868305123926,"upper_bound":0.03876544773814694,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_hash_10000","iteration_count":[220,440,660,880,1100,1320,1540,1760,1980,2200],"measured_values":[88241833.0,188105542.0,273259291.0,401735875.0,463563625.0,546438709.0,611396375.0,738599541.0,790385250.0,886300625.0],"unit":"ns","throughput":[],"typical":{"estimate":409122.42174734356,"lower_bound":402560.0501243914,"upper_bound":420840.6348240469,"unit":"ns"},"mean":{"estimate":415326.7154518398,"lower_bound":405970.84054951294,"upper_bound":426802.02560213744,"unit":"ns"},"median":{"estimate":413998.9738636364,"lower_bound":401024.19507575757,"upper_bound":423585.7127840909,"unit":"ns"},"median_abs_dev":{"estimate":17816.9868150489,"lower_bound":2727.576798166732,"upper_bound":27514.93985815988,"unit":"ns"},"slope":{"estimate":409122.42174734356,"lower_bound":402560.0501243914,"upper_bound":420840.6348240469,"unit":"ns"},"change":{"mean":{"estimate":0.0016386131234420453,"lower_bound":-0.0447391621831066,"upper_bound":0.057122313778719534,"unit":"%"},"median":{"estimate":0.0007265270621481523,"lower_bound":-0.07397431236064733,"upper_bound":0.05272385660338408,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_10000","iteration_count":[224,448,672,896,1120,1344,1568,1792,2016,2240],"measured_values":[121678792.0,186398417.0,280387292.0,361523166.0,470885166.0,553291375.0,657253208.0,753239959.0,824946167.0,910833584.0],"unit":"ns","throughput":[],"typical":{"estimate":412980.6089633581,"lower_bound":408941.5526172377,"upper_bound":418886.1718322026,"unit":"ns"},"mean":{"estimate":426743.67810675316,"lower_bound":411016.9849541171,"upper_bound":453915.47152507177,"unit":"ns"},"median":{"estimate":416655.4445684524,"lower_bound":409148.6329613095,"upper_bound":420334.79854910716,"unit":"ns"},"median_abs_dev":{"estimate":6492.3451075503335,"lower_bound":1011.8615636541508,"upper_bound":15718.613403383028,"unit":"ns"},"slope":{"estimate":412980.6089633581,"lower_bound":408941.5526172377,"upper_bound":418886.1718322026,"unit":"ns"},"change":{"mean":{"estimate":0.06507270634468143,"lower_bound":0.0004891838434652832,"upper_bound":0.1487705487781515,"unit":"%"},"median":{"estimate":0.0503621893005759,"lower_bound":-0.007378055546500728,"upper_bound":0.09066126338326375,"unit":"%"},"change":"NoChange"}} +{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact_decrypt/eql_hash/1000000","EXACT/exact/eql_hash/1000000","EXACT/exact_decrypt/eql_hash/100000","EXACT/exact_decrypt/eql_cast/100000","EXACT/exact/eql_cast/100000","EXACT/exact_decrypt/eql_cast/1000000","EXACT/exact/eql_hash/100000","EXACT/exact/eql_cast/1000000","EXACT/exact/eql_cast/10000","EXACT/exact_decrypt/eql_cast/10000","EXACT/exact/eql_hash/10000","EXACT/exact_decrypt/eql_hash/10000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT"} diff --git a/results/query/exact_rows_100000.json b/results/query/exact_rows_100000.json index f77387c..efdc988 100644 --- a/results/query/exact_rows_100000.json +++ b/results/query/exact_rows_100000.json @@ -1,5 +1,5 @@ -{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_cast_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[2226706583.0,2232892584.0,2268101083.0,2246566500.0,2264623000.0,2297535292.0,792799084.0,789093083.0,786227042.0,786248750.0],"unit":"ns","throughput":[],"typical":{"estimate":1669079300.1,"lower_bound":1226363034.7475,"upper_bound":2109575945.35,"unit":"ns"},"mean":{"estimate":1669079300.1,"lower_bound":1226363034.7475,"upper_bound":2109575945.35,"unit":"ns"},"median":{"estimate":2229799583.5,"lower_bound":789093083.0,"upper_bound":2264623000.0,"unit":"ns"},"median_abs_dev":{"estimate":78605380.89487553,"lower_bound":2747258.492526412,"upper_bound":1082533528.856188,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":1.0821770710920071,"lower_bound":0.5317507124767805,"upper_bound":1.6322918963249116,"unit":"%"},"median":{"estimate":1.8131021075166807,"lower_bound":-0.01080120365119941,"upper_bound":1.8556867350680801,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[785234375.0,786807875.0,789513792.0,786937083.0,785404708.0,788597542.0,786320000.0,787885709.0,786388458.0,786983125.0],"unit":"ns","throughput":[],"typical":{"estimate":787007266.7,"lower_bound":786254766.0775,"upper_bound":787824404.3,"unit":"ns"},"mean":{"estimate":787007266.7,"lower_bound":786254766.0775,"upper_bound":787824404.3,"unit":"ns"},"median":{"estimate":786872479.0,"lower_bound":785896583.0,"upper_bound":787885709.0,"unit":"ns"},"median_abs_dev":{"estimate":1160660.0610941648,"lower_bound":129912.82269358635,"upper_bound":2366847.802180052,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.011438205517971811,"lower_bound":-0.018382542818075047,"upper_bound":-0.006952975280970615,"unit":"%"},"median":{"estimate":-0.008080558716772934,"lower_bound":-0.011726210000173043,"upper_bound":-0.0060771350544630565,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_hash_100000","iteration_count":[228,456,684,912,1140,1368,1596,1824,2052,2280],"measured_values":[97675833.0,177415250.0,267972708.0,355621708.0,451815291.0,529358709.0,627333041.0,698861042.0,818122750.0,899109084.0],"unit":"ns","throughput":[],"typical":{"estimate":392464.74380268855,"lower_bound":387490.280285254,"upper_bound":396186.4823717949,"unit":"ns"},"mean":{"estimate":395172.238151281,"lower_bound":389361.4155378115,"upper_bound":403437.82070346,"unit":"ns"},"median":{"estimate":392419.390037594,"lower_bound":388447.1019736842,"upper_bound":396520.6933723197,"unit":"ns"},"median_abs_dev":{"estimate":5382.336006023391,"lower_bound":1907.457203504301,"upper_bound":11264.70033507735,"unit":"ns"},"slope":{"estimate":392464.74380268855,"lower_bound":387490.280285254,"upper_bound":396186.4823717949,"unit":"ns"},"change":{"mean":{"estimate":0.0038309686175277413,"lower_bound":-0.03543929795740816,"upper_bound":0.04999583557512697,"unit":"%"},"median":{"estimate":-0.012129107638038539,"lower_bound":-0.056227049069459745,"upper_bound":0.05752458802684912,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_100000","iteration_count":[230,460,690,920,1150,1380,1610,1840,2070,2300],"measured_values":[88908083.0,189682917.0,248279834.0,358953708.0,466513750.0,548206625.0,646396000.0,765311417.0,823069083.0,889971250.0],"unit":"ns","throughput":[],"typical":{"estimate":397801.62997176737,"lower_bound":390092.8003488227,"upper_bound":406877.01083299477,"unit":"ns"},"mean":{"estimate":395379.95311853004,"lower_bound":385310.46172619046,"upper_bound":404065.16614130436,"unit":"ns"},"median":{"estimate":397434.54601449275,"lower_bound":386944.02173913043,"upper_bound":406921.1830745342,"unit":"ns"},"median_abs_dev":{"estimate":13877.216329717108,"lower_bound":2676.2347664004224,"upper_bound":25042.54445241682,"unit":"ns"},"slope":{"estimate":397801.62997176737,"lower_bound":390092.8003488227,"upper_bound":406877.01083299477,"unit":"ns"},"change":{"mean":{"estimate":-0.1657708077966994,"lower_bound":-0.2069057858039744,"upper_bound":-0.12596233095501927,"unit":"%"},"median":{"estimate":-0.13056625672198086,"lower_bound":-0.21456575328027727,"upper_bound":-0.1005070356060741,"unit":"%"},"change":"Improved"}} -{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact_decrypt/eql_hash/1000000","EXACT/exact/eql_hash/1000000","EXACT/exact_decrypt/eql_hash/10000","EXACT/exact_decrypt/eql_cast/10000","EXACT/exact/eql_cast/10000","EXACT/exact_decrypt/eql_cast/1000000","EXACT/exact/eql_hash/10000","EXACT/exact/eql_cast/1000000","EXACT/exact/eql_cast/100000","EXACT/exact_decrypt/eql_cast/100000","EXACT/exact/eql_hash/100000","EXACT/exact_decrypt/eql_hash/100000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT"} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_cast_100000","iteration_count":[207,414,621,828,1035,1242,1449,1656,1863,2070],"measured_values":[91542500.0,183934750.0,265712959.0,345890166.0,455921125.0,511696375.0,657076625.0,711966167.0,787200416.0,858054791.0],"unit":"ns","throughput":[],"typical":{"estimate":426005.55594453856,"lower_bound":417845.4233434723,"upper_bound":438380.05830077,"unit":"ns"},"mean":{"estimate":430510.3425843494,"lower_bound":422434.3259928878,"upper_bound":438827.946226248,"unit":"ns"},"median":{"estimate":428905.21064814815,"lower_bound":417741.7463768116,"upper_bound":442395.16908212565,"unit":"ns"},"median_abs_dev":{"estimate":18478.66693745741,"lower_bound":3042.4422719519766,"upper_bound":22924.348979323884,"unit":"ns"},"slope":{"estimate":426005.55594453856,"lower_bound":417845.4233434723,"upper_bound":438380.05830077,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_100000","iteration_count":[210,420,630,840,1050,1260,1470,1680,1890,2100],"measured_values":[94938042.0,190256542.0,266570291.0,361908125.0,452238167.0,553183750.0,682493167.0,710323167.0,838613208.0,929865250.0],"unit":"ns","throughput":[],"typical":{"estimate":440436.57032776746,"lower_bound":430631.182728774,"upper_bound":449267.187456446,"unit":"ns"},"mean":{"estimate":440238.201451814,"lower_bound":432495.62688095245,"upper_bound":448409.9439149659,"unit":"ns"},"median":{"estimate":440913.84920634923,"lower_bound":426985.2259920635,"upper_bound":452085.9142857143,"unit":"ns"},"median_abs_dev":{"estimate":15851.142076585964,"lower_bound":1360.6055291777518,"upper_bound":24289.08371354447,"unit":"ns"},"slope":{"estimate":440436.57032776746,"lower_bound":430631.182728774,"upper_bound":449267.187456446,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_hash_100000","iteration_count":[219,438,657,876,1095,1314,1533,1752,1971,2190],"measured_values":[85526083.0,170157291.0,256196625.0,339009625.0,458985667.0,524873417.0,618550875.0,688167709.0,826586916.0,898265208.0],"unit":"ns","throughput":[],"typical":{"estimate":406235.78245863726,"lower_bound":396694.73313514306,"upper_bound":413200.4980410325,"unit":"ns"},"mean":{"estimate":400039.69488095236,"lower_bound":393125.9105620787,"upper_bound":407584.60260112246,"unit":"ns"},"median":{"estimate":396118.41657153727,"lower_bound":389508.5125570776,"upper_bound":411327.7262883235,"unit":"ns"},"median_abs_dev":{"estimate":11122.090000488626,"lower_bound":1675.136989952156,"upper_bound":21227.075703144084,"unit":"ns"},"slope":{"estimate":406235.78245863726,"lower_bound":396694.73313514306,"upper_bound":413200.4980410325,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_100000","iteration_count":[219,438,657,876,1095,1314,1533,1752,1971,2190],"measured_values":[84802416.0,169951041.0,254047416.0,375829125.0,474532917.0,553088083.0,645717916.0,765987667.0,782828875.0,882309375.0],"unit":"ns","throughput":[],"typical":{"estimate":413898.3182351895,"lower_bound":403438.7811022991,"upper_bound":428497.2556960362,"unit":"ns"},"mean":{"estimate":410370.5109014641,"lower_bound":398683.6080792926,"upper_bound":422217.8294643717,"unit":"ns"},"median":{"estimate":411900.1933028919,"lower_bound":388016.0753424658,"upper_bound":429028.6815068493,"unit":"ns"},"median_abs_dev":{"estimate":28608.01886034816,"lower_bound":1397.9513005239087,"upper_bound":33615.967109909594,"unit":"ns"},"slope":{"estimate":413898.3182351895,"lower_bound":403438.7811022991,"upper_bound":428497.2556960362,"unit":"ns"},"change":null} +{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact/eql_cast/100000","EXACT/exact_decrypt/eql_cast/100000","EXACT/exact/eql_hash/100000","EXACT/exact_decrypt/eql_hash/100000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT"} diff --git a/results/query/exact_rows_1000000.json b/results/query/exact_rows_1000000.json index b975915..0532416 100644 --- a/results/query/exact_rows_1000000.json +++ b/results/query/exact_rows_1000000.json @@ -1,5 +1,5 @@ -{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_cast_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[7794910917.0,7847044333.0,7826574083.0,7846632750.0,7850080958.0,7778334209.0,7831018958.0,7832623500.0,7823451084.0,7841608250.0],"unit":"ns","throughput":[],"typical":{"estimate":7827227904.2,"lower_bound":7812460171.764999,"upper_bound":7839756729.1,"unit":"ns"},"mean":{"estimate":7827227904.2,"lower_bound":7812460171.764999,"upper_bound":7839756729.1,"unit":"ns"},"median":{"estimate":7831821229.0,"lower_bound":7810742500.0,"upper_bound":7846632750.0,"unit":"ns"},"median_abs_dev":{"estimate":18234898.86086583,"lower_bound":2861263.017502427,"upper_bound":34915321.301329136,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.06580308882706754,"lower_bound":-0.13044208181724798,"upper_bound":-0.00711368718855289,"unit":"%"},"median":{"estimate":-0.006990923816915573,"lower_bound":-0.10426205723839044,"upper_bound":-0.0002419052399255106,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[7892146708.0,7845590042.0,7787141334.0,7876417250.0,7833345250.0,7805187833.0,7798594875.0,7858726666.0,7837164459.0,7827918459.0],"unit":"ns","throughput":[],"typical":{"estimate":7836223287.6,"lower_bound":7816715978.085,"upper_bound":7856038262.4,"unit":"ns"},"mean":{"estimate":7836223287.6,"lower_bound":7816715978.085,"upper_bound":7856038262.4,"unit":"ns"},"median":{"estimate":7835254854.5,"lower_bound":7805187833.0,"upper_bound":7861003646.0,"unit":"ns"},"median_abs_dev":{"estimate":39688336.19829118,"lower_bound":6854059.678316116,"upper_bound":58541789.111575484,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.06379454403335438,"lower_bound":-0.12979460258953904,"upper_bound":-0.008264883902907881,"unit":"%"},"median":{"estimate":-0.013995900188117916,"lower_bound":-0.10087076805157302,"upper_bound":-0.0021169777977717574,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_eql_hash_1000000","iteration_count":[242,484,726,968,1210,1452,1694,1936,2178,2420],"measured_values":[112582750.0,187592792.0,284154333.0,374796875.0,488359875.0,567604833.0,688413875.0,756858917.0,824551417.0,962653791.0],"unit":"ns","throughput":[],"typical":{"estimate":392917.423312225,"lower_bound":385307.9026706972,"upper_bound":400099.82387718046,"unit":"ns"},"mean":{"estimate":399960.1914759609,"lower_bound":389007.2664805522,"upper_bound":416239.8739998279,"unit":"ns"},"median":{"estimate":391168.3380681818,"lower_bound":387588.4132231405,"upper_bound":403603.20247933886,"unit":"ns"},"median_abs_dev":{"estimate":7860.721626787294,"lower_bound":359.33291572799925,"upper_bound":20302.746926207063,"unit":"ns"},"slope":{"estimate":392917.423312225,"lower_bound":385307.9026706972,"upper_bound":400099.82387718046,"unit":"ns"},"change":{"mean":{"estimate":-0.06166549964054446,"lower_bound":-0.09194162191101579,"upper_bound":-0.02172591691090822,"unit":"%"},"median":{"estimate":-0.07903392802485731,"lower_bound":-0.09762779181843995,"upper_bound":-0.04563441280126179,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_1000000","iteration_count":[229,458,687,916,1145,1374,1603,1832,2061,2290],"measured_values":[89273333.0,179984167.0,275245500.0,368231625.0,474885000.0,600276208.0,646071708.0,737296208.0,837799667.0,899969958.0],"unit":"ns","throughput":[],"typical":{"estimate":404749.67524527875,"lower_bound":397595.50098925346,"upper_bound":415779.13877354196,"unit":"ns"},"mean":{"estimate":404209.03466867685,"lower_bound":397240.2340412074,"upper_bound":413092.51304429193,"unit":"ns"},"median":{"estimate":402226.92631004367,"lower_bound":392999.98165938864,"upper_bound":408892.9220212102,"unit":"ns"},"median_abs_dev":{"estimate":10008.702524027629,"lower_bound":770.6024931967961,"upper_bound":17797.001524214735,"unit":"ns"},"slope":{"estimate":404749.67524527875,"lower_bound":397595.50098925346,"upper_bound":415779.13877354196,"unit":"ns"},"change":{"mean":{"estimate":-0.04194576318258125,"lower_bound":-0.06294309007153405,"upper_bound":-0.017708831519658654,"unit":"%"},"median":{"estimate":-0.04645034105982293,"lower_bound":-0.0695802079401262,"upper_bound":-0.02744686726729806,"unit":"%"},"change":"Improved"}} -{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact_decrypt/eql_hash/10000","EXACT/exact_decrypt/eql_hash/100000","EXACT/exact_decrypt/eql_cast/10000","EXACT/exact_decrypt/eql_cast/100000","EXACT/exact/eql_cast/100000","EXACT/exact/eql_cast/10000","EXACT/exact/eql_hash/100000","EXACT/exact/eql_hash/10000","EXACT/exact/eql_cast/1000000","EXACT/exact_decrypt/eql_cast/1000000","EXACT/exact/eql_hash/1000000","EXACT/exact_decrypt/eql_hash/1000000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/EXACT"} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_cast/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_cast_1000000","iteration_count":[114,228,342,456,570,684,798,912,1026,1140],"measured_values":[111220417.0,207633875.0,154657333.0,217299042.0,255996375.0,293648708.0,715914417.0,649318125.0,898715584.0,882423125.0],"unit":"ns","throughput":[],"typical":{"estimate":729554.5199817726,"lower_bound":579266.9333773884,"upper_bound":816916.6739211186,"unit":"ns"},"mean":{"estimate":695257.1395137148,"lower_bound":564730.4524562274,"upper_bound":825486.262810803,"unit":"ns"},"median":{"estimate":743013.5005482456,"lower_bound":452214.4239766082,"upper_bound":897135.8609022556,"unit":"ns"},"median_abs_dev":{"estimate":296716.8708443936,"lower_bound":19274.855251662575,"upper_bound":344858.96958049,"unit":"ns"},"slope":{"estimate":729554.5199817726,"lower_bound":579266.9333773884,"upper_bound":816916.6739211186,"unit":"ns"},"change":{"mean":{"estimate":-0.9999132211769995,"lower_bound":-0.999929754403837,"upper_bound":-0.9998948765867203,"unit":"%"},"median":{"estimate":-0.9999072405302023,"lower_bound":-0.9999435681534321,"upper_bound":-0.9998879986042203,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_cast/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_cast_1000000","iteration_count":[171,342,513,684,855,1026,1197,1368,1539,1710],"measured_values":[70718208.0,143040250.0,276062417.0,304802917.0,472662666.0,521332667.0,718801000.0,620982375.0,664433083.0,943154458.0],"unit":"ns","throughput":[],"typical":{"estimate":505907.42440950865,"lower_bound":456378.8420825437,"upper_bound":554045.3905741365,"unit":"ns"},"mean":{"estimate":491421.7408648937,"lower_bound":453044.06153537205,"upper_bound":531229.7601738896,"unit":"ns"},"median":{"estimate":481027.99622319685,"lower_bound":431730.3983105913,"upper_bound":551552.3146198831,"unit":"ns"},"median_abs_dev":{"estimate":88872.24741752387,"lower_bound":10888.558990666006,"upper_bound":108650.56284628624,"unit":"ns"},"slope":{"estimate":505907.42440950865,"lower_bound":456378.8420825437,"upper_bound":554045.3905741365,"unit":"ns"},"change":{"mean":{"estimate":-0.9999386627314146,"lower_bound":-0.9999432154424407,"upper_bound":-0.999933768635663,"unit":"%"},"median":{"estimate":-0.999939996075808,"lower_bound":-0.9999461455085877,"upper_bound":-0.9999311298078122,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"EXACT/exact/eql_hash/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_eql_hash_1000000","iteration_count":[228,456,684,912,1140,1368,1596,1824,2052,2280],"measured_values":[91025042.0,181228000.0,285367834.0,370343709.0,478358458.0,555475708.0,754519250.0,765128375.0,838837458.0,966803209.0],"unit":"ns","throughput":[],"typical":{"estimate":423055.78582820686,"lower_bound":410439.87234250567,"upper_bound":440559.9737923063,"unit":"ns"},"mean":{"estimate":417066.9082941729,"lower_bound":406657.7325767544,"upper_bound":431331.22623951803,"unit":"ns"},"median":{"estimate":412997.30994152045,"lower_bound":402655.63432017545,"upper_bound":421757.38547149126,"unit":"ns"},"median_abs_dev":{"estimate":10279.234370906175,"lower_bound":1785.2333090075356,"upper_bound":23366.55779755094,"unit":"ns"},"slope":{"estimate":423055.78582820686,"lower_bound":410439.87234250567,"upper_bound":440559.9737923063,"unit":"ns"},"change":{"mean":{"estimate":0.039912836206747127,"lower_bound":0.010669592681075332,"upper_bound":0.07599697044991253,"unit":"%"},"median":{"estimate":0.03764357790878403,"lower_bound":0.002651457789572431,"upper_bound":0.06061441074249396,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"EXACT/exact_decrypt/eql_hash/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT/exact_decrypt_eql_hash_1000000","iteration_count":[228,456,684,912,1140,1368,1596,1824,2052,2280],"measured_values":[91911416.0,178735167.0,268568042.0,351820625.0,456181459.0,557669959.0,663052625.0,733402208.0,829428000.0,916695541.0],"unit":"ns","throughput":[],"typical":{"estimate":403619.1487126908,"lower_bound":399618.9344030809,"upper_bound":407751.88488100877,"unit":"ns"},"mean":{"estimate":400510.2726848371,"lower_bound":395485.11774853803,"upper_bound":405478.14408317674,"unit":"ns"},"median":{"estimate":402071.99583333335,"lower_bound":392643.33625730994,"upper_bound":405386.86220760236,"unit":"ns"},"median_abs_dev":{"estimate":5718.510781458577,"lower_bound":803.8899822193017,"upper_bound":15682.194641541606,"unit":"ns"},"slope":{"estimate":403619.1487126908,"lower_bound":399618.9344030809,"upper_bound":407751.88488100877,"unit":"ns"},"change":{"mean":{"estimate":-0.020692905391870742,"lower_bound":-0.047168489790024665,"upper_bound":0.002637677202577882,"unit":"%"},"median":{"estimate":-0.001774227767842751,"lower_bound":-0.04121604849202143,"upper_bound":0.013739706487771971,"unit":"%"},"change":"NoChange"}} +{"reason":"group-complete","group_name":"EXACT","benchmarks":["EXACT/exact_decrypt/eql_hash/10000","EXACT/exact_decrypt/eql_hash/100000","EXACT/exact_decrypt/eql_cast/10000","EXACT/exact_decrypt/eql_cast/100000","EXACT/exact/eql_cast/100000","EXACT/exact/eql_cast/10000","EXACT/exact/eql_hash/100000","EXACT/exact/eql_hash/10000","EXACT/exact/eql_cast/1000000","EXACT/exact_decrypt/eql_cast/1000000","EXACT/exact/eql_hash/1000000","EXACT/exact_decrypt/eql_hash/1000000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/EXACT"} diff --git a/results/query/group_by_rows_10000.json b/results/query/group_by_rows_10000.json new file mode 100644 index 0000000..b4f9670 --- /dev/null +++ b/results/query/group_by_rows_10000.json @@ -0,0 +1,3 @@ +{"reason":"benchmark-complete","id":"GROUP_BY/group_by/eql_cast/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY/group_by_eql_cast_10000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[4551906125.0,4719123208.0,3697537709.0,5082560500.0,4575627875.0,4781555834.0,4956161041.0,5143554041.0,5150066250.0,4642328959.0],"unit":"ns","throughput":[],"typical":{"estimate":4730042154.2,"lower_bound":4456724984.51,"upper_bound":4953773816.5,"unit":"ns"},"mean":{"estimate":4730042154.2,"lower_bound":4456724984.51,"upper_bound":4953773816.5,"unit":"ns"},"median":{"estimate":4750339521.0,"lower_bound":4575627875.0,"upper_bound":5082560500.0,"unit":"ns"},"median_abs_dev":{"estimate":299674163.9105201,"lower_bound":54869512.032571435,"upper_bound":640974206.4666331,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":0.21890863075063693,"lower_bound":0.1316813324960823,"upper_bound":0.30609274533364517,"unit":"%"},"median":{"estimate":0.2534387435964922,"lower_bound":0.11427193668794611,"upper_bound":0.3662535513712508,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"GROUP_BY/group_by/hmac_extractor/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY/group_by_hmac_extractor_10000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[92315167.0,177508125.0,265394167.0,365453292.0,468068709.0,548455500.0,625435166.0,740552209.0,787314334.0,916873500.0],"unit":"ns","throughput":[],"typical":{"estimate":45316144.76753247,"lower_bound":44451783.80521355,"upper_bound":46042851.41433732,"unit":"ns"},"mean":{"estimate":45350194.70299603,"lower_bound":44742306.545117065,"upper_bound":45934173.694068946,"unit":"ns"},"median":{"estimate":45693143.25,"lower_bound":44377031.25,"upper_bound":46157583.5,"unit":"ns"},"median_abs_dev":{"estimate":1193917.47233498,"lower_bound":120100.60541778803,"upper_bound":1634189.7423273304,"unit":"ns"},"slope":{"estimate":45316144.76753247,"lower_bound":44451783.80521355,"upper_bound":46042851.41433732,"unit":"ns"},"change":{"mean":{"estimate":5.682713730216364,"lower_bound":5.4506371407002945,"upper_bound":5.904896748199547,"unit":"%"},"median":{"estimate":5.842602326559897,"lower_bound":5.40180453824739,"upper_bound":6.04298685972822,"unit":"%"},"change":"Regressed"}} +{"reason":"group-complete","group_name":"GROUP_BY","benchmarks":["GROUP_BY/group_by/eql_cast/10000","GROUP_BY/group_by/hmac_extractor/10000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY"} diff --git a/results/query/group_by_rows_100000.json b/results/query/group_by_rows_100000.json new file mode 100644 index 0000000..4f0503b --- /dev/null +++ b/results/query/group_by_rows_100000.json @@ -0,0 +1,3 @@ +{"reason":"benchmark-complete","id":"GROUP_BY/group_by/eql_cast/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY/group_by_eql_cast_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[36405884750.0,37149355416.0,37874740042.0,37501585083.0,39262288917.0,38213672208.0,37403792958.0,37148188000.0,36565849000.0,37661012167.0],"unit":"ns","throughput":[],"typical":{"estimate":37518636854.1,"lower_bound":37060358674.075,"upper_bound":38031094898.1,"unit":"ns"},"mean":{"estimate":37518636854.1,"lower_bound":37060358674.075,"upper_bound":38031094898.1,"unit":"ns"},"median":{"estimate":37452689020.5,"lower_bound":36857602208.0,"upper_bound":37937342187.5,"unit":"ns"},"median_abs_dev":{"estimate":538593019.1726625,"lower_bound":189479952.0014584,"upper_bound":1340112818.8236415,"unit":"ns"},"slope":null,"change":null} +{"reason":"benchmark-complete","id":"GROUP_BY/group_by/hmac_extractor/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY/group_by_hmac_extractor_100000","iteration_count":[5,10,15,20,25,30,35,40,45,50],"measured_values":[1130683709.0,2242166500.0,3382185625.0,4449089041.0,5628849833.0,6703555333.0,7836147125.0,8892240584.0,10000841250.0,11165733292.0],"unit":"ns","throughput":[],"typical":{"estimate":223158114.09246755,"lower_bound":222620143.85736012,"upper_bound":223909520.99635655,"unit":"ns"},"mean":{"estimate":223864423.82338095,"lower_bound":223073082.73042974,"upper_bound":224686908.69868094,"unit":"ns"},"median":{"estimate":223670881.1452381,"lower_bound":222454452.05,"upper_bound":225153993.32,"unit":"ns"},"median_abs_dev":{"estimate":1913514.424313333,"lower_bound":206550.87397798602,"upper_bound":2314014.734368041,"unit":"ns"},"slope":{"estimate":223158114.09246755,"lower_bound":222620143.85736012,"upper_bound":223909520.99635655,"unit":"ns"},"change":null} +{"reason":"group-complete","group_name":"GROUP_BY","benchmarks":["GROUP_BY/group_by/eql_cast/100000","GROUP_BY/group_by/hmac_extractor/100000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/GROUP_BY"} diff --git a/results/query/match_rows_10000.json b/results/query/match_rows_10000.json index 6086fd3..fb967d7 100644 --- a/results/query/match_rows_10000.json +++ b/results/query/match_rows_10000.json @@ -1,7 +1,7 @@ -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_firstname_10000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[549967209.0,522408792.0,522610916.0,533452125.0,522659958.0,530380291.0,523578458.0,521967291.0,519652958.0,523130542.0],"unit":"ns","throughput":[],"typical":{"estimate":263490427.0,"lower_bound":261281130.88375,"upper_bound":266521191.19375002,"unit":"ns"},"mean":{"estimate":263490427.0,"lower_bound":261281130.88375,"upper_bound":266521191.19375002,"unit":"ns"},"median":{"estimate":261447625.0,"lower_bound":261144551.75,"upper_bound":265190145.5,"unit":"ns"},"median_abs_dev":{"estimate":597179.0379479527,"lower_bound":111272.09322452545,"upper_bound":5475735.408586264,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":0.00411839240065226,"lower_bound":-0.005103544058760912,"upper_bound":0.01625680424275525,"unit":"%"},"median":{"estimate":-0.0024254769195483084,"lower_bound":-0.0066926737032416694,"upper_bound":0.011036581585437633,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_10000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[640625000.0,640482958.0,644418458.0,657455583.0,639379916.0,656839458.0,641870417.0,638167917.0,639747000.0,639686167.0],"unit":"ns","throughput":[],"typical":{"estimate":321933643.7,"lower_bound":320069153.8625,"upper_bound":324295331.1,"unit":"ns"},"mean":{"estimate":321933643.7,"lower_bound":320069153.8625,"upper_bound":324295331.1,"unit":"ns"},"median":{"estimate":320276989.5,"lower_bound":319781729.0,"upper_bound":324677468.75,"unit":"ns"},"median_abs_dev":{"estimate":923104.1792616248,"lower_bound":158607.43323415518,"upper_bound":4832210.295461118,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":0.012344242202025901,"lower_bound":0.003794713957270091,"upper_bound":0.02252717258175262,"unit":"%"},"median":{"estimate":0.003073725774062286,"lower_bound":-0.00036689719429994216,"upper_bound":0.020556756161327794,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_lastname_10000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[146245084.0,295872959.0,443916750.0,587987500.0,728427708.0,872962750.0,1017171917.0,1163290709.0,1325489875.0,1449314250.0],"unit":"ns","throughput":[],"typical":{"estimate":145845939.63116884,"lower_bound":145235541.8751711,"upper_bound":146738811.85555556,"unit":"ns"},"mean":{"estimate":146325971.20265874,"lower_bound":145683299.45145932,"upper_bound":147015006.13805556,"unit":"ns"},"median":{"estimate":145965312.8,"lower_bound":145402032.76190478,"upper_bound":147466677.25,"unit":"ns"},"median_abs_dev":{"estimate":1250277.4050031325,"lower_bound":142144.22305643852,"upper_bound":1868332.8405179551,"unit":"ns"},"slope":{"estimate":145845939.63116884,"lower_bound":145235541.8751711,"upper_bound":146738811.85555556,"unit":"ns"},"change":{"mean":{"estimate":-0.09949002706393062,"lower_bound":-0.10588153925086316,"upper_bound":-0.09316597688089202,"unit":"%"},"median":{"estimate":-0.10046285880637762,"lower_bound":-0.10706960981148506,"upper_bound":-0.08911108364547715,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_10000","iteration_count":[3,3,3,3,3,3,3,3,3,3],"measured_values":[603732417.0,634628917.0,638508333.0,602931583.0,626376125.0,612382208.0,604289791.0,617886875.0,637976792.0,600594500.0],"unit":"ns","throughput":[],"typical":{"estimate":205976918.03333336,"lower_bound":203043511.03333333,"upper_bound":209020872.96750003,"unit":"ns"},"mean":{"estimate":205976918.03333336,"lower_bound":203043511.03333333,"upper_bound":209020872.96750003,"unit":"ns"},"median":{"estimate":205044847.16666666,"lower_bound":201203562.33333334,"upper_bound":211542972.33333334,"unit":"ns"},"median_abs_dev":{"estimate":5832815.905746795,"lower_bound":395772.15577362495,"upper_bound":8093430.724912897,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.06641038156867207,"lower_bound":-0.08097641812845884,"upper_bound":-0.05235134787026992,"unit":"%"},"median":{"estimate":-0.0668888082306004,"lower_bound":-0.08612205073177293,"upper_bound":-0.038121986912353356,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_bloom_10000","iteration_count":[99,198,297,396,495,594,693,792,891,990],"measured_values":[91544875.0,186955292.0,279397875.0,376272958.0,454820625.0,552104833.0,714247541.0,697129250.0,797567834.0,885948667.0],"unit":"ns","throughput":[],"typical":{"estimate":918531.7329660238,"lower_bound":894820.8764178094,"upper_bound":966017.296611058,"unit":"ns"},"mean":{"estimate":930904.057413019,"lower_bound":908801.805649551,"upper_bound":957744.9392150673,"unit":"ns"},"median":{"estimate":927082.5614478115,"lower_bound":895137.8608305275,"upper_bound":945458.9116161617,"unit":"ns"},"median_abs_dev":{"estimate":29828.25165731121,"lower_bound":7005.767843804558,"upper_bound":59656.85399693973,"unit":"ns"},"slope":{"estimate":918531.7329660238,"lower_bound":894820.8764178094,"upper_bound":966017.296611058,"unit":"ns"},"change":{"mean":{"estimate":-0.0548037778990319,"lower_bound":-0.10441034450229317,"upper_bound":-0.0029689179600222563,"unit":"%"},"median":{"estimate":-0.07155098311515917,"lower_bound":-0.11108131094639317,"upper_bound":0.020482671002415298,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_bloom/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_bloom_10000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[122343458.0,334219417.0,353727042.0,479038875.0,603157916.0,740124083.0,867214417.0,981954417.0,1080337084.0,1298517750.0],"unit":"ns","throughput":[],"typical":{"estimate":62154546.11298701,"lower_bound":60574551.62908497,"upper_bound":63885780.60477386,"unit":"ns"},"mean":{"estimate":63381440.05216269,"lower_bound":60430689.266051576,"upper_bound":68179809.42043054,"unit":"ns"},"median":{"estimate":61271940.03125,"lower_bound":60018726.88888889,"upper_bound":63301447.20833333,"unit":"ns"},"median_abs_dev":{"estimate":1637799.705441159,"lower_bound":323156.55265532545,"upper_bound":3859653.9411274483,"unit":"ns"},"slope":{"estimate":62154546.11298701,"lower_bound":60574551.62908497,"upper_bound":63885780.60477386,"unit":"ns"},"change":{"mean":{"estimate":0.056606095271677814,"lower_bound":-0.005013792901696573,"upper_bound":0.14339745757159747,"unit":"%"},"median":{"estimate":0.028798406179642688,"lower_bound":-0.003135587502578585,"upper_bound":0.06511579083276398,"unit":"%"},"change":"NoChange"}} -{"reason":"group-complete","group_name":"MATCH","benchmarks":["MATCH/match/eql_cast_firstname/1000000","MATCH/match/eql_cast_firstname/100000","MATCH/match_decrypt/eql_cast_firstname/100000","MATCH/match/eql_cast_lastname/100000","MATCH/match_decrypt/eql_bloom/100000","MATCH/match/eql_bloom/100000","MATCH/match_decrypt/eql_cast_lastname/100000","MATCH/match_decrypt/eql_cast_firstname/1000000","MATCH/match/eql_bloom/1000000","MATCH/match/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_bloom/1000000","MATCH/match/eql_cast_firstname/10000","MATCH/match_decrypt/eql_cast_firstname/10000","MATCH/match/eql_cast_lastname/10000","MATCH/match_decrypt/eql_cast_lastname/10000","MATCH/match/eql_bloom/10000","MATCH/match_decrypt/eql_bloom/10000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH"} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_firstname_10000","iteration_count":[135,270,405,540,675,810,945,1080,1215,1350],"measured_values":[99008334.0,197721709.0,259991958.0,344571667.0,441238667.0,531873833.0,615490459.0,727639125.0,799260958.0,946674583.0],"unit":"ns","throughput":[],"typical":{"estimate":670318.2547763347,"lower_bound":653629.1307591279,"upper_bound":686747.2512187401,"unit":"ns"},"mean":{"estimate":674019.1066281599,"lower_bound":654612.6254791298,"upper_bound":695993.5823071136,"unit":"ns"},"median":{"estimate":657231.1553497943,"lower_bound":647821.182962963,"upper_bound":703021.2782407408,"unit":"ns"},"median_abs_dev":{"estimate":23561.833644749324,"lower_bound":3069.749114735576,"upper_bound":58277.82616113949,"unit":"ns"},"slope":{"estimate":670318.2547763347,"lower_bound":653629.1307591279,"upper_bound":686747.2512187401,"unit":"ns"},"change":{"mean":{"estimate":0.01970805041069945,"lower_bound":-0.015275098699091131,"upper_bound":0.057096646042586026,"unit":"%"},"median":{"estimate":-0.0062513046142086415,"lower_bound":-0.02295063127033925,"upper_bound":0.08082170108618891,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[122159167.0,224108416.0,321455167.0,422570958.0,527025875.0,641924333.0,771012500.0,928474875.0,947304916.0,1095146333.0],"unit":"ns","throughput":[],"typical":{"estimate":27281684.921428572,"lower_bound":26566804.927419353,"upper_bound":28052472.393282387,"unit":"ns"},"mean":{"estimate":27509378.44941468,"lower_bound":26788510.981597226,"upper_bound":28383468.67908482,"unit":"ns"},"median":{"estimate":27083294.454166666,"lower_bound":26410684.875,"upper_bound":28275500.27901786,"unit":"ns"},"median_abs_dev":{"estimate":1041237.5845493361,"lower_bound":99280.62901658379,"upper_bound":2035153.0646031876,"unit":"ns"},"slope":{"estimate":27281684.921428572,"lower_bound":26566804.927419353,"upper_bound":28052472.393282387,"unit":"ns"},"change":{"mean":{"estimate":-0.04958123934462433,"lower_bound":-0.10859613062591118,"upper_bound":0.0010691447482613988,"unit":"%"},"median":{"estimate":-0.04780196815338156,"lower_bound":-0.07483746698719074,"upper_bound":-0.005298270648365078,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_lastname_10000","iteration_count":[103,206,309,412,515,618,721,824,927,1030],"measured_values":[94234375.0,195533042.0,298727083.0,374953250.0,486989084.0,532926334.0,634208042.0,704718333.0,774291667.0,945934666.0],"unit":"ns","throughput":[],"typical":{"estimate":883090.9785146891,"lower_bound":855665.9461720291,"upper_bound":914484.4392484233,"unit":"ns"},"mean":{"estimate":903738.4367248422,"lower_bound":877435.678808368,"upper_bound":929119.2384928724,"unit":"ns"},"median":{"estimate":912488.7742718447,"lower_bound":862340.3462783172,"upper_bound":945609.8718446601,"unit":"ns"},"median_abs_dev":{"estimate":51758.93468682334,"lower_bound":6154.618670636585,"upper_bound":75530.21559903845,"unit":"ns"},"slope":{"estimate":883090.9785146891,"lower_bound":855665.9461720291,"upper_bound":914484.4392484233,"unit":"ns"},"change":{"mean":{"estimate":-0.054550379456170806,"lower_bound":-0.1192818405589943,"upper_bound":0.007200867850503521,"unit":"%"},"median":{"estimate":-0.0233341882462742,"lower_bound":-0.11370417557102908,"upper_bound":0.05456825175182156,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[96045792.0,224267291.0,331386292.0,443821250.0,546358625.0,636713291.0,759782375.0,903360958.0,993206292.0,1109883792.0],"unit":"ns","throughput":[],"typical":{"estimate":27564386.985714287,"lower_bound":27150059.959737826,"upper_bound":27863585.866189152,"unit":"ns"},"mean":{"estimate":27194813.676726185,"lower_bound":26390118.4339747,"upper_bound":27763182.219226193,"unit":"ns"},"median":{"estimate":27602294.0,"lower_bound":26923825.854166664,"upper_bound":27886119.75,"unit":"ns"},"median_abs_dev":{"estimate":530385.4072462767,"lower_bound":97533.1852084413,"upper_bound":1151287.0331730656,"unit":"ns"},"slope":{"estimate":27564386.985714287,"lower_bound":27150059.959737826,"upper_bound":27863585.866189152,"unit":"ns"},"change":{"mean":{"estimate":-0.020276880079356463,"lower_bound":-0.056652436713236935,"upper_bound":0.012069510878030262,"unit":"%"},"median":{"estimate":-0.015378792845818334,"lower_bound":-0.04234600619626083,"upper_bound":0.03373932194025464,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_bloom_10000","iteration_count":[103,206,309,412,515,618,721,824,927,1030],"measured_values":[96478792.0,207202292.0,359094500.0,414809667.0,514673792.0,491864167.0,652048333.0,806033125.0,890544042.0,983358625.0],"unit":"ns","throughput":[],"typical":{"estimate":949011.3596015635,"lower_bound":905619.8385238646,"upper_bound":984727.5302820157,"unit":"ns"},"mean":{"estimate":970467.7125878409,"lower_bound":917130.6769070735,"upper_bound":1026021.0631206656,"unit":"ns"},"median":{"estimate":969434.3622572816,"lower_bound":929541.8658113731,"upper_bound":1005836.3689320388,"unit":"ns"},"median_abs_dev":{"estimate":51260.20316956108,"lower_bound":6253.758547517453,"upper_bound":151896.7559843615,"unit":"ns"},"slope":{"estimate":949011.3596015635,"lower_bound":905619.8385238646,"upper_bound":984727.5302820157,"unit":"ns"},"change":{"mean":{"estimate":0.1284240912832999,"lower_bound":0.05737595146538302,"upper_bound":0.1983362536194862,"unit":"%"},"median":{"estimate":0.1259848244204822,"lower_bound":0.068147760463106,"upper_bound":0.18490343093454853,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_bloom/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_bloom_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[145826459.0,230930250.0,342373292.0,435881334.0,574001500.0,653803625.0,770607333.0,901833375.0,1002966292.0,1153892625.0],"unit":"ns","throughput":[],"typical":{"estimate":28146560.14935065,"lower_bound":27684808.686651584,"upper_bound":28580052.301126517,"unit":"ns"},"mean":{"estimate":28944995.358581353,"lower_bound":27816005.43747024,"upper_bound":30755224.36597222,"unit":"ns"},"median":{"estimate":28356700.317708336,"lower_bound":27521690.464285713,"upper_bound":28847315.625,"unit":"ns"},"median_abs_dev":{"estimate":745826.7146172635,"lower_bound":123208.69093760848,"upper_bound":1747072.8816332584,"unit":"ns"},"slope":{"estimate":28146560.14935065,"lower_bound":27684808.686651584,"upper_bound":28580052.301126517,"unit":"ns"},"change":{"mean":{"estimate":0.03356877083581988,"lower_bound":-0.019146800515889413,"upper_bound":0.10762911524921695,"unit":"%"},"median":{"estimate":0.030437434451316747,"lower_bound":-0.036505137146440436,"upper_bound":0.05380871325758463,"unit":"%"},"change":"NoChange"}} +{"reason":"group-complete","group_name":"MATCH","benchmarks":["MATCH/match/eql_cast_firstname/1000000","MATCH/match/eql_cast_firstname/100000","MATCH/match_decrypt/eql_cast_firstname/100000","MATCH/match/eql_cast_lastname/100000","MATCH/match_decrypt/eql_bloom/100000","MATCH/match/eql_bloom/100000","MATCH/match_decrypt/eql_cast_lastname/100000","MATCH/match_decrypt/eql_cast_firstname/1000000","MATCH/match/eql_bloom/1000000","MATCH/match/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_bloom/1000000","MATCH/match/eql_cast_firstname/10000","MATCH/match_decrypt/eql_cast_firstname/10000","MATCH/match/eql_cast_lastname/10000","MATCH/match_decrypt/eql_cast_lastname/10000","MATCH/match/eql_bloom/10000","MATCH/match_decrypt/eql_bloom/10000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH"} diff --git a/results/query/match_rows_100000.json b/results/query/match_rows_100000.json index c3faa66..8adffa5 100644 --- a/results/query/match_rows_100000.json +++ b/results/query/match_rows_100000.json @@ -1,7 +1,7 @@ -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_firstname_100000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[695995875.0,585418500.0,781715167.0,825201041.0,540133209.0,596981875.0,872340083.0,789185625.0,478776875.0,668576666.0],"unit":"ns","throughput":[],"typical":{"estimate":341716245.8,"lower_bound":302761422.95,"upper_bound":380116606.2,"unit":"ns"},"mean":{"estimate":341716245.8,"lower_bound":302761422.95,"upper_bound":380116606.2,"unit":"ns"},"median":{"estimate":341143135.25,"lower_bound":284278771.0,"upper_bound":401729052.0,"unit":"ns"},"median_abs_dev":{"estimate":76475564.87543732,"lower_bound":16118038.911947608,"upper_bound":109876008.8897109,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.2740049441579807,"lower_bound":-0.3855150098051601,"upper_bound":-0.1567897030054098,"unit":"%"},"median":{"estimate":-0.28554712601770804,"lower_bound":-0.43973144549374843,"upper_bound":-0.041325011101800535,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_100000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[919855292.0,960610500.0,619136458.0,778823292.0,860762875.0,881919833.0,576849583.0,681795500.0,859207083.0,900180375.0],"unit":"ns","throughput":[],"typical":{"estimate":401957039.55,"lower_bound":360681456.2,"upper_bound":439027235.35,"unit":"ns"},"mean":{"estimate":401957039.55,"lower_bound":360681456.2,"upper_bound":439027235.35,"unit":"ns"},"median":{"estimate":429992489.5,"lower_bound":340897750.0,"upper_bound":450443781.25,"unit":"ns"},"median_abs_dev":{"estimate":52273509.87195969,"lower_bound":8418480.638042092,"upper_bound":110139464.31048363,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.2024658685576134,"lower_bound":-0.31538422090523294,"upper_bound":-0.06229372786639084,"unit":"%"},"median":{"estimate":-0.20266957804408203,"lower_bound":-0.37577292967425735,"upper_bound":-0.0018567571131447025,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_lastname_100000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[114522083.0,271359000.0,433365667.0,417898625.0,638228250.0,614820041.0,821219834.0,967801292.0,1004117333.0,1160155458.0],"unit":"ns","throughput":[],"typical":{"estimate":115944293.06753246,"lower_bound":111498552.52538943,"upper_bound":120962228.16813281,"unit":"ns"},"mean":{"estimate":119512353.74150793,"lower_bound":112120351.22234128,"upper_bound":127630040.8111111,"unit":"ns"},"median":{"estimate":116666332.47142857,"lower_bound":109498369.625,"upper_bound":128327330.75,"unit":"ns"},"median_abs_dev":{"estimate":11917922.47198125,"lower_bound":2189422.427596651,"upper_bound":22652074.81459529,"unit":"ns"},"slope":{"estimate":115944293.06753246,"lower_bound":111498552.52538943,"upper_bound":120962228.16813281,"unit":"ns"},"change":{"mean":{"estimate":-0.08143820231998111,"lower_bound":-0.1813702780020383,"upper_bound":0.03159466734863331,"unit":"%"},"median":{"estimate":-0.10073271834924291,"lower_bound":-0.23868927508683002,"upper_bound":0.07626963406477372,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_100000","iteration_count":[3,3,3,3,3,3,3,3,3,3],"measured_values":[482076125.0,517081500.0,618354000.0,443344125.0,475255125.0,521193084.0,517811333.0,567961916.0,652738875.0,519027916.0],"unit":"ns","throughput":[],"typical":{"estimate":177161466.63333333,"lower_bound":165193545.83333334,"upper_bound":190429662.43333334,"unit":"ns"},"mean":{"estimate":177161466.63333333,"lower_bound":165193545.83333334,"upper_bound":190429662.43333334,"unit":"ns"},"median":{"estimate":172806541.5,"lower_bound":160692041.66666666,"upper_bound":189924514.0,"unit":"ns"},"median_abs_dev":{"estimate":19646426.20410622,"lower_bound":535013.0033016353,"upper_bound":36441010.078042746,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.026741742036183958,"lower_bound":-0.12136940388333457,"upper_bound":0.07538698822175584,"unit":"%"},"median":{"estimate":-0.05795397494906429,"lower_bound":-0.14185969528839737,"upper_bound":0.12771570931057696,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_bloom_100000","iteration_count":[28,56,84,112,140,168,196,224,252,280],"measured_values":[101529125.0,186289666.0,295933250.0,373816333.0,461137708.0,562301208.0,595278375.0,734334875.0,866471208.0,931792917.0],"unit":"ns","throughput":[],"typical":{"estimate":3311175.045825603,"lower_bound":3205612.7402758133,"upper_bound":3391340.2094992637,"unit":"ns"},"mean":{"estimate":3353579.875412415,"lower_bound":3259778.789961735,"upper_bound":3444577.8297708337,"unit":"ns"},"median":{"estimate":3332738.838392857,"lower_bound":3293840.7714285715,"upper_bound":3438377.8095238097,"unit":"ns"},"median_abs_dev":{"estimate":69204.95975949091,"lower_bound":8187.400223394442,"upper_bound":269570.9603391588,"unit":"ns"},"slope":{"estimate":3311175.045825603,"lower_bound":3205612.7402758133,"upper_bound":3391340.2094992637,"unit":"ns"},"change":{"mean":{"estimate":-0.029044810217253025,"lower_bound":-0.06828248497977868,"upper_bound":0.010984549273723667,"unit":"%"},"median":{"estimate":-0.019560620798880213,"lower_bound":-0.07245473582204764,"upper_bound":0.014617688604529722,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_bloom/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_bloom_100000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[138469750.0,265178125.0,426540584.0,576850375.0,676561541.0,744317834.0,999890709.0,1079071917.0,1203583792.0,1359678917.0],"unit":"ns","throughput":[],"typical":{"estimate":67747295.52987012,"lower_bound":66055190.66165414,"upper_bound":69497368.52262443,"unit":"ns"},"mean":{"estimate":68212091.25382936,"lower_bound":66397740.024662696,"upper_bound":69874054.16875647,"unit":"ns"},"median":{"estimate":67820049.975,"lower_bound":66865766.222222224,"upper_bound":71090097.33333333,"unit":"ns"},"median_abs_dev":{"estimate":2179676.7831780016,"lower_bound":401748.29696628754,"upper_bound":5495044.308357216,"unit":"ns"},"slope":{"estimate":67747295.52987012,"lower_bound":66055190.66165414,"upper_bound":69497368.52262443,"unit":"ns"},"change":{"mean":{"estimate":0.09409326986461841,"lower_bound":0.049661047440397586,"upper_bound":0.13859350604925724,"unit":"%"},"median":{"estimate":0.10340363221258642,"lower_bound":0.05342399648444962,"upper_bound":0.17246519130079374,"unit":"%"},"change":"Regressed"}} -{"reason":"group-complete","group_name":"MATCH","benchmarks":["MATCH/match/eql_cast_firstname/1000000","MATCH/match/eql_cast_lastname/10000","MATCH/match_decrypt/eql_cast_firstname/10000","MATCH/match/eql_cast_firstname/10000","MATCH/match_decrypt/eql_cast_firstname/1000000","MATCH/match/eql_bloom/1000000","MATCH/match/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_bloom/10000","MATCH/match_decrypt/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_cast_lastname/10000","MATCH/match_decrypt/eql_bloom/1000000","MATCH/match/eql_bloom/10000","MATCH/match/eql_cast_firstname/100000","MATCH/match_decrypt/eql_cast_firstname/100000","MATCH/match/eql_cast_lastname/100000","MATCH/match_decrypt/eql_cast_lastname/100000","MATCH/match/eql_bloom/100000","MATCH/match_decrypt/eql_bloom/100000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH"} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_firstname_100000","iteration_count":[83,166,249,332,415,498,581,664,747,830],"measured_values":[97782959.0,184410458.0,271682125.0,404076542.0,452206625.0,609347000.0,702409333.0,771393625.0,880385333.0,980778834.0],"unit":"ns","throughput":[],"typical":{"estimate":1177729.3760287904,"lower_bound":1154510.4739964884,"upper_bound":1196132.1376722765,"unit":"ns"},"mean":{"estimate":1164137.421296137,"lower_bound":1133476.4592950374,"upper_bound":1192522.7653198508,"unit":"ns"},"median":{"estimate":1178334.6479250335,"lower_bound":1110906.373493976,"upper_bound":1208966.1497418245,"unit":"ns"},"median_abs_dev":{"estimate":51442.41767366236,"lower_bound":2634.065708898677,"upper_bound":79564.75059632906,"unit":"ns"},"slope":{"estimate":1177729.3760287904,"lower_bound":1154510.4739964884,"upper_bound":1196132.1376722765,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_100000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[115074375.0,241029375.0,337491833.0,430877375.0,543720458.0,752521791.0,805142500.0,899609583.0,1007454625.0,1132295834.0],"unit":"ns","throughput":[],"typical":{"estimate":28434919.018831167,"lower_bound":27900786.973742798,"upper_bound":29282848.807692308,"unit":"ns"},"mean":{"estimate":28565265.380307544,"lower_bound":27847627.261378966,"upper_bound":29392721.27935045,"unit":"ns"},"median":{"estimate":28215857.633333333,"lower_bound":27649411.184375,"upper_bound":29441880.58035714,"unit":"ns"},"median_abs_dev":{"estimate":809475.6928239356,"lower_bound":103388.16194783054,"upper_bound":2181385.646440164,"unit":"ns"},"slope":{"estimate":28434919.018831167,"lower_bound":27900786.973742798,"upper_bound":29282848.807692308,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_lastname_100000","iteration_count":[33,66,99,132,165,198,231,264,297,330],"measured_values":[91106833.0,196809583.0,255567375.0,369264208.0,503606125.0,555357292.0,659196875.0,730998458.0,786261334.0,935434417.0],"unit":"ns","throughput":[],"typical":{"estimate":2791949.7282959465,"lower_bound":2716605.6414141413,"upper_bound":2869683.457893856,"unit":"ns"},"mean":{"estimate":2808330.838496874,"lower_bound":2727582.3953992305,"upper_bound":2891128.709007576,"unit":"ns"},"median":{"estimate":2801145.4646464647,"lower_bound":2708139.055976431,"upper_bound":2908306.5636363635,"unit":"ns"},"median_abs_dev":{"estimate":68831.93088707986,"lower_bound":26613.599896453543,"upper_bound":248052.92676234187,"unit":"ns"},"slope":{"estimate":2791949.7282959465,"lower_bound":2716605.6414141413,"upper_bound":2869683.457893856,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_100000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[103205458.0,213804291.0,385671042.0,423312666.0,618902667.0,721411708.0,825436375.0,952927625.0,1068347958.0,1113859750.0],"unit":"ns","throughput":[],"typical":{"estimate":29194328.675324675,"lower_bound":28380953.49786419,"upper_bound":30001802.85648148,"unit":"ns"},"mean":{"estimate":28890883.52502976,"lower_bound":27667314.54330729,"upper_bound":30107823.345863093,"unit":"ns"},"median":{"estimate":29578101.351190478,"lower_bound":26725536.375,"upper_bound":30362060.815625,"unit":"ns"},"median_abs_dev":{"estimate":2297021.4946997175,"lower_bound":221735.980829026,"upper_bound":3575428.127582833,"unit":"ns"},"slope":{"estimate":29194328.675324675,"lower_bound":28380953.49786419,"upper_bound":30001802.85648148,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_bloom_100000","iteration_count":[36,72,108,144,180,216,252,288,324,360],"measured_values":[89448416.0,184227709.0,271747459.0,376730667.0,470580041.0,566689417.0,713852917.0,745447917.0,873608334.0,932829125.0],"unit":"ns","throughput":[],"typical":{"estimate":2646783.953607504,"lower_bound":2591456.447887671,"upper_bound":2717738.2818586924,"unit":"ns"},"mean":{"estimate":2612228.196901455,"lower_bound":2560141.307476852,"upper_bound":2673798.754384921,"unit":"ns"},"median":{"estimate":2602762.7875,"lower_bound":2552270.499421296,"upper_bound":2656253.6030092593,"unit":"ns"},"median_abs_dev":{"estimate":48068.808299385826,"lower_bound":6841.127425490042,"upper_bound":150999.3211500602,"unit":"ns"},"slope":{"estimate":2646783.953607504,"lower_bound":2591456.447887671,"upper_bound":2717738.2818586924,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_bloom/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_bloom_100000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[106731041.0,201005958.0,385516459.0,473044166.0,584949042.0,710398291.0,879213541.0,984166083.0,1011503208.0,1240378209.0],"unit":"ns","throughput":[],"typical":{"estimate":30051778.16038961,"lower_bound":28895702.749244712,"upper_bound":30885477.31245547,"unit":"ns"},"mean":{"estimate":29360995.810922623,"lower_bound":28024282.691171873,"upper_bound":30573642.949802086,"unit":"ns"},"median":{"estimate":29582594.583333336,"lower_bound":27965106.175,"upper_bound":31077836.85044643,"unit":"ns"},"median_abs_dev":{"estimate":2158772.2285666335,"lower_bound":286990.663712398,"upper_bound":3497248.2625614326,"unit":"ns"},"slope":{"estimate":30051778.16038961,"lower_bound":28895702.749244712,"upper_bound":30885477.31245547,"unit":"ns"},"change":null} +{"reason":"group-complete","group_name":"MATCH","benchmarks":["MATCH/match/eql_cast_firstname/100000","MATCH/match_decrypt/eql_cast_firstname/100000","MATCH/match/eql_cast_lastname/100000","MATCH/match_decrypt/eql_cast_lastname/100000","MATCH/match/eql_bloom/100000","MATCH/match_decrypt/eql_bloom/100000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH"} diff --git a/results/query/match_rows_1000000.json b/results/query/match_rows_1000000.json index b744f3e..729b338 100644 --- a/results/query/match_rows_1000000.json +++ b/results/query/match_rows_1000000.json @@ -1,7 +1,5 @@ -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_firstname_1000000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[1090875750.0,756854209.0,465250292.0,655697000.0,1258982417.0,676868041.0,847896750.0,519412958.0,875749666.0,835150292.0],"unit":"ns","throughput":[],"typical":{"estimate":399136868.75,"lower_bound":330682500.92,"upper_bound":473264023.525,"unit":"ns"},"mean":{"estimate":399136868.75,"lower_bound":330682500.92,"upper_bound":473264023.525,"unit":"ns"},"median":{"estimate":398001125.25,"lower_bound":299070249.75,"upper_bound":484693125.0,"unit":"ns"},"median_abs_dev":{"estimate":96161234.14179683,"lower_bound":15694092.414674163,"upper_bound":211812680.09437323,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.06289538519782645,"lower_bound":-0.2541363535369519,"upper_bound":0.1733246968851381,"unit":"%"},"median":{"estimate":-0.03987647449912768,"lower_bound":-0.31491648512688897,"upper_bound":0.2570604692421703,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_1000000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[978876125.0,1039871833.0,960755875.0,880510667.0,940179125.0,739549333.0,759747125.0,919120625.0,880569000.0,904925042.0],"unit":"ns","throughput":[],"typical":{"estimate":450205237.5,"lower_bound":422009214.09749997,"upper_bound":476172294.495,"unit":"ns"},"mean":{"estimate":450205237.5,"lower_bound":422009214.09749997,"upper_bound":476172294.495,"unit":"ns"},"median":{"estimate":456011416.75,"lower_bound":410079031.25,"upper_bound":480377937.5,"unit":"ns"},"median_abs_dev":{"estimate":29742885.817158222,"lower_bound":9049187.9330948,"upper_bound":81220162.40805387,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.1311516084693528,"lower_bound":-0.24964788249274014,"upper_bound":0.005630844408828099,"unit":"%"},"median":{"estimate":-0.12325701236693942,"lower_bound":-0.243271158070533,"upper_bound":0.07717536151979942,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_cast_lastname_1000000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[117403209.0,226370084.0,391453500.0,522123708.0,562306583.0,720595708.0,798208333.0,1184225791.0,1409644208.0,1291659416.0],"unit":"ns","throughput":[],"typical":{"estimate":134111071.59220779,"lower_bound":119895067.55710785,"upper_bound":145895283.47822586,"unit":"ns"},"mean":{"estimate":127201534.08210316,"lower_bound":118958636.41045237,"upper_bound":136566251.59354267,"unit":"ns"},"median":{"estimate":124632613.13333333,"lower_bound":114029761.85714285,"upper_bound":139256361.9375,"unit":"ns"},"median_abs_dev":{"estimate":13219050.70039493,"lower_bound":1011863.6590558335,"upper_bound":25743723.909877542,"unit":"ns"},"slope":{"estimate":134111071.59220779,"lower_bound":119895067.55710785,"upper_bound":145895283.47822586,"unit":"ns"},"change":{"mean":{"estimate":-0.18665851390208854,"lower_bound":-0.30285818330698766,"upper_bound":-0.0647647345826599,"unit":"%"},"median":{"estimate":-0.1761768151469053,"lower_bound":-0.2897125608561202,"upper_bound":-0.02759620533612861,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_1000000","iteration_count":[3,3,3,3,3,3,3,3,3,3],"measured_values":[664314458.0,475894125.0,662133084.0,577233709.0,523390292.0,577835916.0,619468959.0,619671583.0,498752708.0,500269042.0],"unit":"ns","throughput":[],"typical":{"estimate":190632129.2,"lower_bound":177066848.62666667,"upper_bound":204212060.79916665,"unit":"ns"},"mean":{"estimate":190632129.2,"lower_bound":177066848.62666667,"upper_bound":204212060.79916665,"unit":"ns"},"median":{"estimate":192511604.1666667,"lower_bound":166756347.33333334,"upper_bound":213600340.5,"unit":"ns"},"median_abs_dev":{"estimate":32471482.32961598,"lower_bound":1078035.011661038,"upper_bound":38934115.352681324,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.24270391989655538,"lower_bound":-0.39968202477480114,"upper_bound":-0.04940620214757167,"unit":"%"},"median":{"estimate":-0.16167425513306855,"lower_bound":-0.3784285778987142,"upper_bound":0.012900962896206458,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_eql_bloom_1000000","iteration_count":[5,10,15,20,25,30,35,40,45,50],"measured_values":[111262708.0,218296125.0,316091959.0,413629458.0,540187667.0,629994792.0,727861791.0,848310958.0,936660834.0,1054346000.0],"unit":"ns","throughput":[],"typical":{"estimate":21031939.46025974,"lower_bound":20883987.08482758,"upper_bound":21206391.605172433,"unit":"ns"},"mean":{"estimate":21234918.76680952,"lower_bound":20959788.44088095,"upper_bound":21551175.901666664,"unit":"ns"},"median":{"estimate":21079858.633333333,"lower_bound":20814685.2,"upper_bound":21607506.68,"unit":"ns"},"median_abs_dev":{"estimate":406959.53041502315,"lower_bound":64562.48453378788,"upper_bound":791681.7139708424,"unit":"ns"},"slope":{"estimate":21031939.46025974,"lower_bound":20883987.08482758,"upper_bound":21206391.605172433,"unit":"ns"},"change":{"mean":{"estimate":-0.03288784036231562,"lower_bound":-0.04922555803357187,"upper_bound":-0.01562724569795044,"unit":"%"},"median":{"estimate":-0.03715317481860947,"lower_bound":-0.052592981621914836,"upper_bound":-0.010468125208645485,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_bloom/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH/match_decrypt_eql_bloom_1000000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[158191708.0,319613083.0,481495708.0,660083125.0,818121667.0,960787625.0,1180228542.0,1260107084.0,1514446292.0,2177843834.0],"unit":"ns","throughput":[],"typical":{"estimate":88946081.84025975,"lower_bound":80331644.27808511,"upper_bound":99322055.34675615,"unit":"ns"},"mean":{"estimate":83972343.04337302,"lower_bound":80325898.29861112,"upper_bound":89950596.91813493,"unit":"ns"},"median":{"estimate":81030725.68333334,"lower_bound":79580744.70833334,"upper_bound":84135905.1111111,"unit":"ns"},"median_abs_dev":{"estimate":2531195.955174789,"lower_bound":256500.11187121642,"upper_bound":5154048.277532352,"unit":"ns"},"slope":{"estimate":88946081.84025975,"lower_bound":80331644.27808511,"upper_bound":99322055.34675615,"unit":"ns"},"change":{"mean":{"estimate":0.028527985767776265,"lower_bound":-0.026462062304566415,"upper_bound":0.10901466780160374,"unit":"%"},"median":{"estimate":0.005673415957825556,"lower_bound":-0.021475971028100727,"upper_bound":0.04442913076921928,"unit":"%"},"change":"NoChange"}} -{"reason":"group-complete","group_name":"MATCH","benchmarks":["MATCH/match/eql_cast_lastname/10000","MATCH/match/eql_cast_firstname/100000","MATCH/match_decrypt/eql_cast_firstname/10000","MATCH/match_decrypt/eql_cast_firstname/100000","MATCH/match/eql_cast_lastname/100000","MATCH/match_decrypt/eql_bloom/100000","MATCH/match/eql_bloom/100000","MATCH/match/eql_cast_firstname/10000","MATCH/match_decrypt/eql_cast_lastname/100000","MATCH/match_decrypt/eql_bloom/10000","MATCH/match_decrypt/eql_cast_lastname/10000","MATCH/match/eql_bloom/10000","MATCH/match/eql_cast_firstname/1000000","MATCH/match_decrypt/eql_cast_firstname/1000000","MATCH/match/eql_cast_lastname/1000000","MATCH/match_decrypt/eql_cast_lastname/1000000","MATCH/match/eql_bloom/1000000","MATCH/match_decrypt/eql_bloom/1000000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/MATCH"} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_firstname/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_firstname_1000000","iteration_count":[19,38,57,76,95,114,133,152,171,190],"measured_values":[90527292.0,181007792.0,270681584.0,382648500.0,472861334.0,556310375.0,652804250.0,745992833.0,811661667.0,919180416.0],"unit":"ns","throughput":[],"typical":{"estimate":4857372.812713603,"lower_bound":4804118.623007029,"upper_bound":4921375.720422911,"unit":"ns"},"mean":{"estimate":4856951.02995614,"lower_bound":4798861.696658991,"upper_bound":4918643.218279605,"unit":"ns"},"median":{"estimate":4858853.616666666,"lower_bound":4756697.01754386,"upper_bound":4942667.655921053,"unit":"ns"},"median_abs_dev":{"estimate":140661.6503938091,"lower_bound":11708.534171079176,"upper_bound":187954.49993353686,"unit":"ns"},"slope":{"estimate":4857372.812713603,"lower_bound":4804118.623007029,"upper_bound":4921375.720422911,"unit":"ns"},"change":{"mean":{"estimate":-0.9874380852198805,"lower_bound":-0.988655238953072,"upper_bound":-0.9856820751407159,"unit":"%"},"median":{"estimate":-0.9877678246182628,"lower_bound":-0.9888109232100681,"upper_bound":-0.9862896355655763,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_firstname/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_firstname_1000000","iteration_count":[3,6,9,12,15,18,21,24,27,30],"measured_values":[94940542.0,174636917.0,270874084.0,360227083.0,491246500.0,535855750.0,672654375.0,774155916.0,870580750.0,904978458.0],"unit":"ns","throughput":[],"typical":{"estimate":31303853.89004329,"lower_bound":30420351.36057043,"upper_bound":32102739.677119244,"unit":"ns"},"mean":{"estimate":31008591.20457672,"lower_bound":30249930.321666665,"upper_bound":31766979.361190476,"unit":"ns"},"median":{"estimate":30906397.96666667,"lower_bound":29933442.166666664,"upper_bound":32243731.48148148,"unit":"ns"},"median_abs_dev":{"estimate":1676373.4369050884,"lower_bound":108989.64292004907,"upper_bound":1876174.2377468045,"unit":"ns"},"slope":{"estimate":31303853.89004329,"lower_bound":30420351.36057043,"upper_bound":32102739.677119244,"unit":"ns"},"change":{"mean":{"estimate":-0.9259031882487296,"lower_bound":-0.9305094046118007,"upper_bound":-0.9206422404783118,"unit":"%"},"median":{"estimate":-0.926852975001608,"lower_bound":-0.931325999335721,"upper_bound":-0.9166641227130601,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"MATCH/match/eql_cast_lastname/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_cast_lastname_1000000","iteration_count":[6,12,18,24,30,36,42,48,54,60],"measured_values":[111553875.0,207288959.0,311476875.0,414722167.0,517945250.0,637749375.0,733010375.0,825896500.0,926161166.0,1036259459.0],"unit":"ns","throughput":[],"typical":{"estimate":17303880.214285713,"lower_bound":17212006.102217603,"upper_bound":17456341.402515724,"unit":"ns"},"mean":{"estimate":17451178.43715609,"lower_bound":17256475.23703704,"upper_bound":17736942.944285713,"unit":"ns"},"median":{"estimate":17277085.104166668,"lower_bound":17238584.03333333,"upper_bound":17509765.625,"unit":"ns"},"median_abs_dev":{"estimate":72716.89558401704,"lower_bound":6745.317147749628,"upper_bound":356275.9395748358,"unit":"ns"},"slope":{"estimate":17303880.214285713,"lower_bound":17212006.102217603,"upper_bound":17456341.402515724,"unit":"ns"},"change":{"mean":{"estimate":-0.8683813811923236,"lower_bound":-0.8783045967657279,"upper_bound":-0.8565042367466531,"unit":"%"},"median":{"estimate":-0.8679102403790255,"lower_bound":-0.8841517136386209,"upper_bound":-0.8519472185853121,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"MATCH/match_decrypt/eql_cast_lastname/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_decrypt_eql_cast_lastname_1000000","iteration_count":[3,6,9,12,15,18,21,24,27,30],"measured_values":[118174375.0,254394625.0,385308916.0,561893083.0,659088084.0,782043042.0,906888875.0,1032976292.0,1198792125.0,1300024916.0],"unit":"ns","throughput":[],"typical":{"estimate":43653309.1974026,"lower_bound":43205112.12660984,"upper_bound":44250044.48168498,"unit":"ns"},"mean":{"estimate":43277286.46849205,"lower_bound":42154169.95920636,"upper_bound":44337357.00142857,"unit":"ns"},"median":{"estimate":43259674.1952381,"lower_bound":42719891.5,"upper_bound":43939205.6,"unit":"ns"},"median_abs_dev":{"estimate":835522.0485798541,"lower_bound":193961.98875648555,"upper_bound":2974334.1016533505,"unit":"ns"},"slope":{"estimate":43653309.1974026,"lower_bound":43205112.12660984,"upper_bound":44250044.48168498,"unit":"ns"},"change":{"mean":{"estimate":-0.7244581915909477,"lower_bound":-0.7410750185121298,"upper_bound":-0.7072158607164999,"unit":"%"},"median":{"estimate":-0.7243138132939773,"lower_bound":-0.7367488787189185,"upper_bound":-0.704323479834285,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"MATCH/match/eql_bloom/1000000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/MATCH/match_eql_bloom_1000000","iteration_count":[6,12,18,24,30,36,42,48,54,60],"measured_values":[102656833.0,208275084.0,311191791.0,420131875.0,520374917.0,618091916.0,727908083.0,825663417.0,976896708.0,1031436500.0],"unit":"ns","throughput":[],"typical":{"estimate":17424604.0017316,"lower_bound":17211435.41709256,"upper_bound":17760868.739164695,"unit":"ns"},"mean":{"estimate":17358846.13791667,"lower_bound":17225031.53172222,"upper_bound":17545902.758055557,"unit":"ns"},"median":{"estimate":17309788.833333332,"lower_bound":17185270.538194444,"upper_bound":17425662.679166667,"unit":"ns"},"median_abs_dev":{"estimate":168755.56751023885,"lower_bound":18615.64881950709,"upper_bound":277301.2160102539,"unit":"ns"},"slope":{"estimate":17424604.0017316,"lower_bound":17211435.41709256,"upper_bound":17760868.739164695,"unit":"ns"},"change":{"mean":{"estimate":-0.009974561731766918,"lower_bound":-0.021364787760249988,"upper_bound":0.0035480852378329086,"unit":"%"},"median":{"estimate":-0.01383237043330865,"lower_bound":-0.028437591500036774,"upper_bound":-0.00018150635036928708,"unit":"%"},"change":"NoChange"}} diff --git a/results/query/ore_rows_10000.json b/results/query/ore_rows_10000.json index 1cc82f7..f2b2026 100644 --- a/results/query/ore_rows_10000.json +++ b/results/query/ore_rows_10000.json @@ -1,13 +1,15 @@ -{"reason":"benchmark-complete","id":"ORE/ore/exact/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_exact_10000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[555991542.0,554330750.0,553355042.0,551002084.0,551516667.0,551910042.0,556069792.0,552744417.0,554012959.0,552113792.0],"unit":"ns","throughput":[],"typical":{"estimate":276652354.35,"lower_bound":276152714.41625,"upper_bound":277192796.05,"unit":"ns"},"mean":{"estimate":276652354.35,"lower_bound":276152714.41625,"upper_bound":277192796.05,"unit":"ns"},"median":{"estimate":276524864.75,"lower_bound":275907614.75,"upper_bound":277501125.25,"unit":"ns"},"median_abs_dev":{"estimate":897235.4042708874,"lower_bound":221324.37732070684,"upper_bound":1541811.3101273775,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.004566024165571503,"lower_bound":-0.013503050962924897,"upper_bound":0.002279841494447675,"unit":"%"},"median":{"estimate":0.0016567515821162004,"lower_bound":-0.009428418320856169,"upper_bound":0.004489274860162595,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/exact/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_exact_10000","iteration_count":[2,2,2,2,2,2,2,2,2,2],"measured_values":[554540917.0,551406750.0,559683958.0,550947208.0,555709625.0,550455458.0,554200708.0,551601291.0,553122167.0,552716625.0],"unit":"ns","throughput":[],"typical":{"estimate":276719235.35,"lower_bound":275980858.2,"upper_bound":277595664.5,"unit":"ns"},"mean":{"estimate":276719235.35,"lower_bound":275980858.2,"upper_bound":277595664.5,"unit":"ns"},"median":{"estimate":276459698.0,"lower_bound":275637124.75,"upper_bound":277477583.25,"unit":"ns"},"median_abs_dev":{"estimate":1161678.9779260755,"lower_bound":252196.92722260952,"upper_bound":2138156.7562401295,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.007630343733100675,"lower_bound":-0.013969607972443883,"upper_bound":-0.0013941100907434933,"unit":"%"},"median":{"estimate":-0.006729394148801582,"lower_bound":-0.014414897318855813,"upper_bound":-0.0010903418618160021,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_10_10000","iteration_count":[42,84,126,168,210,252,294,336,378,420],"measured_values":[96652375.0,204280750.0,285002917.0,382696625.0,448071750.0,534559958.0,633315292.0,741342000.0,835738417.0,931733666.0],"unit":"ns","throughput":[],"typical":{"estimate":2197999.5721088434,"lower_bound":2167311.451388221,"upper_bound":2221513.81636742,"unit":"ns"},"mean":{"estimate":2231785.9732634164,"lower_bound":2181578.1115823416,"upper_bound":2289614.950527731,"unit":"ns"},"median":{"estimate":2214680.8417989416,"lower_bound":2154133.646258503,"upper_bound":2281587.4682539683,"unit":"ns"},"median_abs_dev":{"estimate":91789.58421148072,"lower_bound":9196.067553403953,"upper_bound":153194.0813813329,"unit":"ns"},"slope":{"estimate":2197999.5721088434,"lower_bound":2167311.451388221,"upper_bound":2221513.81636742,"unit":"ns"},"change":{"mean":{"estimate":-0.07905040881532144,"lower_bound":-0.13757265893907342,"upper_bound":-0.012560055753672764,"unit":"%"},"median":{"estimate":-0.11136228669854453,"lower_bound":-0.16298860549098548,"upper_bound":0.032811254609281804,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_10_10000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[116220916.0,239779042.0,354916208.0,466290292.0,637991375.0,721542583.0,843299250.0,959518416.0,1107401583.0,1215334750.0],"unit":"ns","throughput":[],"typical":{"estimate":60706629.85714286,"lower_bound":59976359.48026316,"upper_bound":61395001.35699065,"unit":"ns"},"mean":{"estimate":60191650.17976191,"lower_bound":59295757.440952376,"upper_bound":61219795.0047619,"unit":"ns"},"median":{"estimate":60049224.79166667,"lower_bound":59115523.5,"upper_bound":60878985.440476194,"unit":"ns"},"median_abs_dev":{"estimate":1196484.9891081434,"lower_bound":136242.1037562265,"upper_bound":2595095.6125028506,"unit":"ns"},"slope":{"estimate":60706629.85714286,"lower_bound":59976359.48026316,"upper_bound":61395001.35699065,"unit":"ns"},"change":{"mean":{"estimate":-0.034829877631672446,"lower_bound":-0.07588819522741966,"upper_bound":0.0009508776605389598,"unit":"%"},"median":{"estimate":-0.006301025146838279,"lower_bound":-0.06271315518211695,"upper_bound":0.012437241643051822,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_100_10000","iteration_count":[7,14,21,28,35,42,49,56,63,70],"measured_values":[101085000.0,187161292.0,291649042.0,383354583.0,475399541.0,574380875.0,655472000.0,749479833.0,856729875.0,957145834.0],"unit":"ns","throughput":[],"typical":{"estimate":13570770.269387756,"lower_bound":13463547.72686433,"upper_bound":13665088.595891612,"unit":"ns"},"mean":{"estimate":13668018.873112243,"lower_bound":13506107.885867348,"upper_bound":13875685.929928571,"unit":"ns"},"median":{"estimate":13636199.40952381,"lower_bound":13383568.44642857,"upper_bound":13781892.36904762,"unit":"ns"},"median_abs_dev":{"estimate":227494.5189261649,"lower_bound":12329.119838258182,"upper_bound":436402.55729623267,"unit":"ns"},"slope":{"estimate":13570770.269387756,"lower_bound":13463547.72686433,"upper_bound":13665088.595891612,"unit":"ns"},"change":{"mean":{"estimate":-0.00016092757081098696,"lower_bound":-0.03137397115144966,"upper_bound":0.028416777639421836,"unit":"%"},"median":{"estimate":0.013184528398539008,"lower_bound":-0.03094582211328889,"upper_bound":0.032723859396800004,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_100_10000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[97489417.0,244229834.0,350571750.0,485409667.0,605754417.0,698455500.0,821698375.0,916249834.0,1018242583.0,1161800250.0],"unit":"ns","throughput":[],"typical":{"estimate":116007483.45974027,"lower_bound":114607636.04081632,"upper_bound":118043310.2106284,"unit":"ns"},"mean":{"estimate":115660893.53206348,"lower_bound":111021704.28918847,"upper_bound":119103421.80822022,"unit":"ns"},"median":{"estimate":116633250.0,"lower_bound":114531229.25,"upper_bound":121150883.4,"unit":"ns"},"median_abs_dev":{"estimate":4149208.713545155,"lower_bound":502026.8835872412,"upper_bound":7698441.4366403585,"unit":"ns"},"slope":{"estimate":116007483.45974027,"lower_bound":114607636.04081632,"upper_bound":118043310.2106284,"unit":"ns"},"change":{"mean":{"estimate":-0.06397679356281971,"lower_bound":-0.12641777278933752,"upper_bound":-6.612078876204225e-6,"unit":"%"},"median":{"estimate":-0.03352839344381753,"lower_bound":-0.11507138022737076,"upper_bound":0.017022196253142274,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_10_10000","iteration_count":[48,96,144,192,240,288,336,384,432,480],"measured_values":[85569083.0,194709125.0,273924208.0,383927542.0,447740541.0,519754625.0,670385167.0,744327667.0,804779167.0,975579167.0],"unit":"ns","throughput":[],"typical":{"estimate":1939167.871103896,"lower_bound":1870799.96970943,"upper_bound":1996863.3919513458,"unit":"ns"},"mean":{"estimate":1921199.1072032074,"lower_bound":1867161.4694791667,"upper_bound":1974252.0487045303,"unit":"ns"},"median":{"estimate":1920302.3719618055,"lower_bound":1835144.5732638887,"upper_bound":2011707.0007440476,"unit":"ns"},"median_abs_dev":{"estimate":114317.22018426574,"lower_bound":24339.83141288166,"upper_bound":150082.53795341885,"unit":"ns"},"slope":{"estimate":1939167.871103896,"lower_bound":1870799.96970943,"upper_bound":1996863.3919513458,"unit":"ns"},"change":{"mean":{"estimate":0.11312268838907302,"lower_bound":0.03816614122997209,"upper_bound":0.19696326352585852,"unit":"%"},"median":{"estimate":0.0870490464019289,"lower_bound":0.008904622671221052,"upper_bound":0.2522935262762691,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_10_10000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[121105084.0,242622541.0,358797125.0,518728167.0,626176750.0,755342166.0,856819709.0,941123959.0,1081154792.0,1195023750.0],"unit":"ns","throughput":[],"typical":{"estimate":60555780.8025974,"lower_bound":59756923.98548094,"upper_bound":61961331.16964286,"unit":"ns"},"mean":{"estimate":61124857.22926588,"lower_bound":60124606.28111607,"upper_bound":62253487.657919146,"unit":"ns"},"median":{"estimate":60604088.625,"lower_bound":59799520.833333336,"upper_bound":62617675.0,"unit":"ns"},"median_abs_dev":{"estimate":1228681.6861115377,"lower_bound":242779.82283979654,"upper_bound":3053552.7129136026,"unit":"ns"},"slope":{"estimate":60555780.8025974,"lower_bound":59756923.98548094,"upper_bound":61961331.16964286,"unit":"ns"},"change":{"mean":{"estimate":-0.04185164742365266,"lower_bound":-0.07984956052851694,"upper_bound":-0.0037859743428518963,"unit":"%"},"median":{"estimate":-0.03874177556768976,"lower_bound":-0.09036689217197236,"upper_bound":0.01610361532684923,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_100_10000","iteration_count":[9,18,27,36,45,54,63,72,81,90],"measured_values":[94291917.0,186891750.0,296623125.0,393983375.0,485781792.0,582240208.0,686551167.0,804993042.0,893708500.0,968268333.0],"unit":"ns","throughput":[],"typical":{"estimate":10917197.932178931,"lower_bound":10789169.30882353,"upper_bound":11047667.451487519,"unit":"ns"},"mean":{"estimate":10823722.777266312,"lower_bound":10675030.621661376,"upper_bound":10960867.064834436,"unit":"ns"},"median":{"estimate":10846394.252380952,"lower_bound":10629552.87037037,"upper_bound":10988710.455246914,"unit":"ns"},"median_abs_dev":{"estimate":175862.89600614193,"lower_bound":35121.371178694244,"upper_bound":412576.8865160374,"unit":"ns"},"slope":{"estimate":10917197.932178931,"lower_bound":10789169.30882353,"upper_bound":11047667.451487519,"unit":"ns"},"change":{"mean":{"estimate":-0.16646548425362673,"lower_bound":-0.19100159508060735,"upper_bound":-0.14070212491943754,"unit":"%"},"median":{"estimate":-0.15957371257660902,"lower_bound":-0.19938550485508344,"upper_bound":-0.13114357878114258,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_100_10000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[142634166.0,220171959.0,359183625.0,421388125.0,554921333.0,607929958.0,755456708.0,900005292.0,1000335041.0,1260263834.0],"unit":"ns","throughput":[],"typical":{"estimate":113927690.57922077,"lower_bound":107408316.53296168,"upper_bound":120308907.70613107,"unit":"ns"},"mean":{"estimate":114769874.76626985,"lower_bound":108536150.51388888,"upper_bound":122497644.6340476,"unit":"ns"},"median":{"estimate":111066302.24444444,"lower_bound":107716505.375,"upper_bound":119727875.0,"unit":"ns"},"median_abs_dev":{"estimate":6570279.948142552,"lower_bound":909152.303996001,"upper_bound":16485705.395310232,"unit":"ns"},"slope":{"estimate":113927690.57922077,"lower_bound":107408316.53296168,"upper_bound":120308907.70613107,"unit":"ns"},"change":{"mean":{"estimate":-0.05463357248328682,"lower_bound":-0.1099210420072943,"upper_bound":0.006825880860379326,"unit":"%"},"median":{"estimate":-0.0804687767251353,"lower_bound":-0.1222210613194441,"upper_bound":-0.010506267630167598,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_ordered_10_10000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[538411083.0,546542792.0,540864917.0,545722500.0,538505000.0,545123708.0,537896500.0,550726042.0,544214959.0,538512250.0],"unit":"ns","throughput":[],"typical":{"estimate":542651975.1,"lower_bound":540140087.6,"upper_bound":545318371.1,"unit":"ns"},"mean":{"estimate":542651975.1,"lower_bound":540140087.6,"upper_bound":545318371.1,"unit":"ns"},"median":{"estimate":542539938.0,"lower_bound":538461666.5,"upper_bound":545833250.0,"unit":"ns"},"median_abs_dev":{"estimate":5953040.678912401,"lower_bound":139241.34172797203,"upper_bound":8306020.2409386635,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.002635727441795299,"lower_bound":-0.00838228434025974,"upper_bound":0.003240184374811569,"unit":"%"},"median":{"estimate":-0.0012393449598022688,"lower_bound":-0.013115477583909962,"upper_bound":0.006047266874367185,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ordered_10_10000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[599779792.0,581447417.0,599291667.0,599406625.0,599611166.0,601384042.0,598819584.0,601277917.0,598870958.0,598835500.0],"unit":"ns","throughput":[],"typical":{"estimate":597872466.8,"lower_bound":594013404.185,"upper_bound":600144912.8,"unit":"ns"},"mean":{"estimate":597872466.8,"lower_bound":594013404.185,"upper_bound":600144912.8,"unit":"ns"},"median":{"estimate":599349146.0,"lower_bound":598835500.0,"upper_bound":600444541.5,"unit":"ns"},"median_abs_dev":{"estimate":735246.5311467648,"lower_bound":49882.07611441612,"upper_bound":2510567.33712852,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.009997739995133537,"lower_bound":-0.020325140255370383,"upper_bound":-0.0012466351875751024,"unit":"%"},"median":{"estimate":-0.004405685123564429,"lower_bound":-0.017567547286085006,"upper_bound":0.0009231403104172919,"unit":"%"},"change":"NoChange"}} -{"reason":"group-complete","group_name":"ORE","benchmarks":["ORE/ore/exact/10000","ORE/ore_decrypt/exact/10000","ORE/ore/range_gt_10/10000","ORE/ore_decrypt/range_gt_10/10000","ORE/ore/range_gt_100/10000","ORE/ore_decrypt/range_gt_100/10000","ORE/ore/range_lt_10/10000","ORE/ore_decrypt/range_lt_10/10000","ORE/ore/range_lt_100/10000","ORE/ore_decrypt/range_lt_100/10000","ORE/ore/range_lt_ordered_10/10000","ORE/ore_decrypt/range_lt_ordered_10/10000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE"} +{"reason":"benchmark-complete","id":"ORE/ore/range_gt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_gt_10_10000","iteration_count":[61,122,183,244,305,366,427,488,549,610],"measured_values":[111318709.0,197778750.0,256108458.0,374971000.0,479480458.0,552442917.0,651524500.0,730160209.0,803746584.0,966981667.0],"unit":"ns","throughput":[],"typical":{"estimate":1524063.6352139662,"lower_bound":1485815.4122752512,"upper_bound":1563788.4755493547,"unit":"ns"},"mean":{"estimate":1553505.7844203748,"lower_bound":1494170.8450351288,"upper_bound":1626899.9461065573,"unit":"ns"},"median":{"estimate":1531292.4473067916,"lower_bound":1494918.8899297426,"upper_bound":1596602.1852459018,"unit":"ns"},"median_abs_dev":{"estimate":70199.64716010072,"lower_bound":20281.609142388486,"upper_bound":153485.5780890208,"unit":"ns"},"slope":{"estimate":1524063.6352139662,"lower_bound":1485815.4122752512,"upper_bound":1563788.4755493547,"unit":"ns"},"change":{"mean":{"estimate":-0.378148753541114,"lower_bound":-0.40230538330324017,"upper_bound":-0.3452247959250055,"unit":"%"},"median":{"estimate":-0.3814481937513796,"lower_bound":-0.4021094360122811,"upper_bound":-0.3497238375012155,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_gt_10_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[134498583.0,236023583.0,316222875.0,464566000.0,553139792.0,668701875.0,859420250.0,981985333.0,1087549541.0,1131559834.0],"unit":"ns","throughput":[],"typical":{"estimate":29329063.12142857,"lower_bound":28273271.201763604,"upper_bound":30220342.861180257,"unit":"ns"},"mean":{"estimate":29391376.993561514,"lower_bound":28243164.28034722,"upper_bound":30658165.34738219,"unit":"ns"},"median":{"estimate":29269161.4375,"lower_bound":27862578.125,"upper_bound":30687041.65625,"unit":"ns"},"median_abs_dev":{"estimate":2093774.778543692,"lower_bound":358693.480623584,"upper_bound":3467030.7623928995,"unit":"ns"},"slope":{"estimate":29329063.12142857,"lower_bound":28273271.201763604,"upper_bound":30220342.861180257,"unit":"ns"},"change":{"mean":{"estimate":-0.0002995325324263165,"lower_bound":-0.05084012248323879,"upper_bound":0.04973956992570959,"unit":"%"},"median":{"estimate":0.0030647276987638694,"lower_bound":-0.08083881468334486,"upper_bound":0.07326355062496415,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"ORE/ore/range_gt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_gt_100_10000","iteration_count":[14,28,42,56,70,84,98,112,126,140],"measured_values":[88996125.0,186091541.0,269595375.0,358466750.0,448057708.0,554859459.0,633070166.0,731034625.0,848043916.0,895247625.0],"unit":"ns","throughput":[],"typical":{"estimate":6519094.115398887,"lower_bound":6421690.88467818,"upper_bound":6632885.24692526,"unit":"ns"},"mean":{"estimate":6494154.383183106,"lower_bound":6424065.599591836,"upper_bound":6572836.760974702,"unit":"ns"},"median":{"estimate":6439418.576530612,"lower_bound":6397908.928571429,"upper_bound":6605469.75,"unit":"ns"},"median_abs_dev":{"estimate":94400.98676333272,"lower_bound":9189.906526847295,"upper_bound":202312.09770824207,"unit":"ns"},"slope":{"estimate":6519094.115398887,"lower_bound":6421690.88467818,"upper_bound":6632885.24692526,"unit":"ns"},"change":{"mean":{"estimate":-0.5606689931650426,"lower_bound":-0.5736855619806251,"upper_bound":-0.549678014533415,"unit":"%"},"median":{"estimate":-0.5541287123319921,"lower_bound":-0.5709817762771191,"upper_bound":-0.5426311757681446,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_gt_100_10000","iteration_count":[3,6,9,12,15,18,21,24,27,30],"measured_values":[142112417.0,294236833.0,406392292.0,570268916.0,712804250.0,808694042.0,967449125.0,1064513792.0,1233398292.0,1337631083.0],"unit":"ns","throughput":[],"typical":{"estimate":45378505.44935065,"lower_bound":44823081.76082474,"upper_bound":46274356.86639118,"unit":"ns"},"mean":{"estimate":46222798.49968253,"lower_bound":45336726.477142856,"upper_bound":47173087.131587304,"unit":"ns"},"median":{"estimate":45875212.08730159,"lower_bound":44871200.93888889,"upper_bound":47520283.333333336,"unit":"ns"},"median_abs_dev":{"estimate":2063114.143142401,"lower_bound":113960.29407679666,"upper_bound":2473964.908978343,"unit":"ns"},"slope":{"estimate":45378505.44935065,"lower_bound":44823081.76082474,"upper_bound":46274356.86639118,"unit":"ns"},"change":{"mean":{"estimate":-0.1279054180688285,"lower_bound":-0.14767969499461953,"upper_bound":-0.1072332921017398,"unit":"%"},"median":{"estimate":-0.1303365042080139,"lower_bound":-0.15455301426271273,"upper_bound":-0.0985570633517302,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_10_10000","iteration_count":[71,142,213,284,355,426,497,568,639,710],"measured_values":[103179875.0,169023416.0,263705500.0,348010959.0,458829917.0,598222583.0,653809750.0,701714083.0,804314500.0,884450333.0],"unit":"ns","throughput":[],"typical":{"estimate":1272419.4940552406,"lower_bound":1245604.1300480296,"upper_bound":1317926.4218923498,"unit":"ns"},"mean":{"estimate":1285908.2642627992,"lower_bound":1240690.1479208588,"upper_bound":1338202.8983446094,"unit":"ns"},"median":{"estimate":1252206.4160406885,"lower_bound":1231722.345657277,"upper_bound":1348378.5016431925,"unit":"ns"},"median_abs_dev":{"estimate":49732.28809939942,"lower_bound":9387.296640736618,"upper_bound":132609.4223355008,"unit":"ns"},"slope":{"estimate":1272419.4940552406,"lower_bound":1245604.1300480296,"upper_bound":1317926.4218923498,"unit":"ns"},"change":{"mean":{"estimate":-0.32068194341812795,"lower_bound":-0.3524467929006541,"upper_bound":-0.2845412864257665,"unit":"%"},"median":{"estimate":-0.3326100611817553,"lower_bound":-0.3640300856644596,"upper_bound":-0.2797641885527964,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_10_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[117031833.0,250547042.0,333167667.0,454434375.0,594945000.0,668385792.0,782089292.0,912762750.0,1109972125.0,1193954667.0],"unit":"ns","throughput":[],"typical":{"estimate":29302875.97987013,"lower_bound":28275293.410569105,"upper_bound":30088334.12989312,"unit":"ns"},"mean":{"estimate":29147613.92563492,"lower_bound":28441430.31319197,"upper_bound":29917019.313134916,"unit":"ns"},"median":{"estimate":28890897.09375,"lower_bound":27931760.42857143,"upper_bound":30289904.513888888,"unit":"ns"},"median_abs_dev":{"estimate":1421150.8352470293,"lower_bound":150656.87968030683,"upper_bound":2161802.6042265818,"unit":"ns"},"slope":{"estimate":29302875.97987013,"lower_bound":28275293.410569105,"upper_bound":30088334.12989312,"unit":"ns"},"change":{"mean":{"estimate":-0.026341340612251574,"lower_bound":-0.0694143149677045,"upper_bound":0.0155620549746146,"unit":"%"},"median":{"estimate":-0.023261462121507814,"lower_bound":-0.07783769011980968,"upper_bound":0.028276001700246578,"unit":"%"},"change":"NoChange"}} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_100_10000","iteration_count":[14,28,42,56,70,84,98,112,126,140],"measured_values":[87709709.0,179557250.0,264738000.0,351355000.0,443111417.0,534521917.0,651639041.0,737366500.0,820949583.0,901440084.0],"unit":"ns","throughput":[],"typical":{"estimate":6480983.148423006,"lower_bound":6398096.703407136,"upper_bound":6549931.900190724,"unit":"ns"},"mean":{"estimate":6413607.759795918,"lower_bound":6339117.567431972,"upper_bound":6494759.401857142,"unit":"ns"},"median":{"estimate":6388057.541666666,"lower_bound":6302179.764285713,"upper_bound":6515472.880952381,"unit":"ns"},"median_abs_dev":{"estimate":147246.59616084953,"lower_bound":35229.32877455321,"upper_bound":224779.80953936197,"unit":"ns"},"slope":{"estimate":6480983.148423006,"lower_bound":6398096.703407136,"upper_bound":6549931.900190724,"unit":"ns"},"change":{"mean":{"estimate":-0.5599168305299298,"lower_bound":-0.5711020226370892,"upper_bound":-0.5504229771237805,"unit":"%"},"median":{"estimate":-0.5571927440947941,"lower_bound":-0.5672929135875131,"upper_bound":-0.5459983315363977,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_100/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_100_10000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[84721292.0,185758333.0,285243334.0,349268750.0,473475208.0,593283000.0,637864833.0,769820041.0,848816125.0,936453791.0],"unit":"ns","throughput":[],"typical":{"estimate":47095602.849350646,"lower_bound":46250297.15622839,"upper_bound":47916453.99191374,"unit":"ns"},"mean":{"estimate":46444181.67537698,"lower_bound":45147932.850394845,"upper_bound":47605466.913611114,"unit":"ns"},"median":{"estimate":46989570.46944444,"lower_bound":45049088.5,"upper_bound":47730636.68125,"unit":"ns"},"median_abs_dev":{"estimate":1241801.4902365396,"lower_bound":286193.48823905067,"upper_bound":3348640.9114347384,"unit":"ns"},"slope":{"estimate":47095602.849350646,"lower_bound":46250297.15622839,"upper_bound":47916453.99191374,"unit":"ns"},"change":{"mean":{"estimate":-0.13647232247903607,"lower_bound":-0.16506611609471367,"upper_bound":-0.10840768473892491,"unit":"%"},"median":{"estimate":-0.1230879887566042,"lower_bound":-0.16679433092673557,"upper_bound":-0.10240263344081768,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_ordered_10_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[63495250.0,126438625.0,192023917.0,249787958.0,328427833.0,395997875.0,445772708.0,536486291.0,583475750.0,646182167.0],"unit":"ns","throughput":[],"typical":{"estimate":16256574.806493506,"lower_bound":16050854.696185187,"upper_bound":16491536.29331519,"unit":"ns"},"mean":{"estimate":16126154.853978176,"lower_bound":15924809.986145834,"upper_bound":16340450.96528646,"unit":"ns"},"median":{"estimate":16078273.629166666,"lower_bound":15862640.99107143,"upper_bound":16421391.65,"unit":"ns"},"median_abs_dev":{"estimate":354272.18100041116,"lower_bound":85713.35371578457,"upper_bound":600189.2904020103,"unit":"ns"},"slope":{"estimate":16256574.806493506,"lower_bound":16050854.696185187,"upper_bound":16491536.29331519,"unit":"ns"},"change":{"mean":{"estimate":-0.9755308569418186,"lower_bound":-0.9763844790441544,"upper_bound":-0.9747305734061379,"unit":"%"},"median":{"estimate":-0.9748876851713664,"lower_bound":-0.9765096817527757,"upper_bound":-0.9742296262650018,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ordered_10_10000","iteration_count":[3,6,9,12,15,18,21,24,27,30],"measured_values":[126667542.0,249555584.0,370095625.0,522242167.0,608805500.0,774376500.0,881606291.0,1012135042.0,1109613125.0,1247589583.0],"unit":"ns","throughput":[],"typical":{"estimate":41771479.723809525,"lower_bound":41352473.05659851,"upper_bound":42336680.09803922,"unit":"ns"},"mean":{"estimate":41890162.523756616,"lower_bound":41383234.01072818,"upper_bound":42431992.702645496,"unit":"ns"},"median":{"estimate":41786924.64285715,"lower_bound":41121736.11111111,"upper_bound":42596605.041666664,"unit":"ns"},"median_abs_dev":{"estimate":816006.634546319,"lower_bound":178847.55272481914,"upper_bound":1486195.3527447537,"unit":"ns"},"slope":{"estimate":41771479.723809525,"lower_bound":41352473.05659851,"upper_bound":42336680.09803922,"unit":"ns"},"change":{"mean":{"estimate":-0.9365115016240321,"lower_bound":-0.9373889416092059,"upper_bound":-0.9356319008948646,"unit":"%"},"median":{"estimate":-0.9366081123781814,"lower_bound":-0.9375954966381621,"upper_bound":-0.9354077911051406,"unit":"%"},"change":"Improved"}} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_hybrid_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_hybrid_ordered_10_10000","iteration_count":[75,150,225,300,375,450,525,600,675,750],"measured_values":[91475833.0,176155458.0,324425459.0,379213583.0,458805708.0,571798208.0,623958833.0,742399334.0,818233708.0,883926708.0],"unit":"ns","throughput":[],"typical":{"estimate":1217974.4485194804,"lower_bound":1195854.2829905835,"upper_bound":1254564.9116145761,"unit":"ns"},"mean":{"estimate":1241072.0539830686,"lower_bound":1203794.3658021956,"upper_bound":1292821.084948148,"unit":"ns"},"median":{"estimate":1221579.8306666669,"lower_bound":1188493.0152380953,"upper_bound":1264045.2766666666,"unit":"ns"},"median_abs_dev":{"estimate":56006.890402678844,"lower_bound":8364.682329008294,"upper_bound":84029.63546684226,"unit":"ns"},"slope":{"estimate":1217974.4485194804,"lower_bound":1195854.2829905835,"upper_bound":1254564.9116145761,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_hybrid_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_hybrid_ordered_10_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[120961000.0,228718250.0,336342875.0,471191708.0,562109333.0,705723834.0,787965709.0,923876291.0,1004374125.0,1144335417.0],"unit":"ns","throughput":[],"typical":{"estimate":28510762.475324675,"lower_bound":28160419.46251921,"upper_bound":28908288.55562201,"unit":"ns"},"mean":{"estimate":28733914.554970235,"lower_bound":28314839.74138095,"upper_bound":29200176.261874996,"unit":"ns"},"median":{"estimate":28599083.3375,"lower_bound":28085102.69047619,"upper_bound":29405159.75,"unit":"ns"},"median_abs_dev":{"estimate":788837.4114028345,"lower_bound":83811.04116205448,"upper_bound":1238104.7826692462,"unit":"ns"},"slope":{"estimate":28510762.475324675,"lower_bound":28160419.46251921,"upper_bound":28908288.55562201,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ore_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_ore_ordered_10_10000","iteration_count":[75,150,225,300,375,450,525,600,675,750],"measured_values":[101076708.0,223080542.0,327858292.0,373852000.0,484134750.0,560835875.0,597890542.0,715279541.0,864979292.0,908548209.0],"unit":"ns","throughput":[],"typical":{"estimate":1232542.8747359307,"lower_bound":1196757.117398374,"upper_bound":1279059.4680310548,"unit":"ns"},"mean":{"estimate":1289936.2406470901,"lower_bound":1227630.2393070632,"upper_bound":1358927.6389563493,"unit":"ns"},"median":{"estimate":1263876.3737037037,"lower_bound":1211397.612,"upper_bound":1374086.9822222223,"unit":"ns"},"median_abs_dev":{"estimate":92086.18733715455,"lower_bound":25874.58118170126,"upper_bound":188624.0065122544,"unit":"ns"},"slope":{"estimate":1232542.8747359307,"lower_bound":1196757.117398374,"upper_bound":1279059.4680310548,"unit":"ns"},"change":{"mean":{"estimate":0.125253246502119,"lower_bound":0.06621155256489736,"upper_bound":0.18870546666516558,"unit":"%"},"median":{"estimate":0.11173013037705637,"lower_bound":0.050576355656023475,"upper_bound":0.20934946245168118,"unit":"%"},"change":"Regressed"}} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ore_ordered_10/10000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ore_ordered_10_10000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[122907375.0,249828166.0,343002917.0,486249250.0,577763167.0,653539250.0,788446708.0,930451459.0,1004688959.0,1229236750.0],"unit":"ns","throughput":[],"typical":{"estimate":29028524.384415586,"lower_bound":28057142.715968516,"upper_bound":30048696.954617836,"unit":"ns"},"mean":{"estimate":29292284.395763893,"lower_bound":28485160.41277604,"upper_bound":30104023.16527084,"unit":"ns"},"median":{"estimate":28982383.221875,"lower_bound":28158811.0,"upper_bound":30726843.75,"unit":"ns"},"median_abs_dev":{"estimate":1840315.3839820381,"lower_bound":255239.77834359472,"upper_bound":2342341.938102619,"unit":"ns"},"slope":{"estimate":29028524.384415586,"lower_bound":28057142.715968516,"upper_bound":30048696.954617836,"unit":"ns"},"change":{"mean":{"estimate":-0.06941090977814401,"lower_bound":-0.16045759803088852,"upper_bound":0.010754108463294327,"unit":"%"},"median":{"estimate":-0.0323046616582372,"lower_bound":-0.09882375020683087,"upper_bound":0.05335237678174454,"unit":"%"},"change":"NoChange"}} +{"reason":"group-complete","group_name":"ORE","benchmarks":["ORE/ore_decrypt/range_lt_ordered_10/100000","ORE/ore/range_lt_10/100000","ORE/ore_decrypt/range_lt_ore_100/10000","ORE/ore_decrypt/range_gt_ore_10/10000","ORE/ore_decrypt/range_lt_100/100000","ORE/ore_decrypt/range_gt_10/100000","ORE/ore_decrypt/range_gt_ore_100/10000","ORE/ore/range_lt_ordered_10/100000","ORE/ore/range_gt_100/100000","ORE/ore/range_lt_ore_10/10000","ORE/ore_decrypt/exact/10000","ORE/ore/range_lt_100/100000","ORE/ore_decrypt/range_lt_ore_10/10000","ORE/ore_decrypt/range_gt_100/100000","ORE/ore/range_gt_ore_100/10000","ORE/ore_decrypt/range_lt_10/100000","ORE/ore/exact/100000","ORE/ore_decrypt/exact/100000","ORE/ore/range_lt_ore_100/10000","ORE/ore/range_gt_10/100000","ORE/ore/range_gt_ore_10/10000","ORE/ore/exact/10000","ORE/ore/range_gt_10/10000","ORE/ore_decrypt/range_gt_10/10000","ORE/ore/range_gt_100/10000","ORE/ore_decrypt/range_gt_100/10000","ORE/ore/range_lt_10/10000","ORE/ore_decrypt/range_lt_10/10000","ORE/ore/range_lt_100/10000","ORE/ore_decrypt/range_lt_100/10000","ORE/ore/range_lt_ordered_10/10000","ORE/ore_decrypt/range_lt_ordered_10/10000","ORE/ore/range_lt_hybrid_ordered_10/10000","ORE/ore_decrypt/range_lt_hybrid_ordered_10/10000","ORE/ore/range_lt_ore_ordered_10/10000","ORE/ore_decrypt/range_lt_ore_ordered_10/10000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE"} diff --git a/results/query/ore_rows_100000.json b/results/query/ore_rows_100000.json index e63005f..d158153 100644 --- a/results/query/ore_rows_100000.json +++ b/results/query/ore_rows_100000.json @@ -1,13 +1,15 @@ -{"reason":"benchmark-complete","id":"ORE/ore/exact/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_exact_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[1848759625.0,1879388917.0,1853749166.0,1856375292.0,1854809208.0,1852368333.0,1855487708.0,1850737917.0,1855425708.0,1872310333.0],"unit":"ns","throughput":[],"typical":{"estimate":1857941220.7,"lower_bound":1852912679.1,"upper_bound":1864282183.4,"unit":"ns"},"mean":{"estimate":1857941220.7,"lower_bound":1852912679.1,"upper_bound":1864282183.4,"unit":"ns"},"median":{"estimate":1855117458.0,"lower_bound":1852243541.5,"upper_bound":1863899020.5,"unit":"ns"},"median_abs_dev":{"estimate":3052241.167911887,"lower_bound":548932.6402544975,"upper_bound":12470611.691102386,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.19109618459689992,"lower_bound":-0.2857000768750406,"upper_bound":-0.08812626983880038,"unit":"%"},"median":{"estimate":-0.10395279642830246,"lower_bound":-0.2926000528713725,"upper_bound":-0.02712193552408837,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/exact/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_exact_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[1893093417.0,1879446958.0,1851051833.0,1852171292.0,1848114959.0,1854357083.0,1935087708.0,1871263000.0,1849756625.0,1850441709.0],"unit":"ns","throughput":[],"typical":{"estimate":1868478458.4,"lower_bound":1854246362.8,"upper_bound":1886763370.245,"unit":"ns"},"mean":{"estimate":1868478458.4,"lower_bound":1854246362.8,"upper_bound":1886763370.245,"unit":"ns"},"median":{"estimate":1853264187.5,"lower_bound":1850404229.0,"upper_bound":1882178208.5,"unit":"ns"},"median_abs_dev":{"estimate":6417279.0543705225,"lower_bound":1015705.5203676224,"upper_bound":39169085.95080972,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":0.0002734590190298647,"lower_bound":-0.008875904192565226,"upper_bound":0.01132696177451975,"unit":"%"},"median":{"estimate":-0.006033787554215464,"lower_bound":-0.011668410515270122,"upper_bound":0.008942220913680243,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_10_100000","iteration_count":[52,104,156,208,260,312,364,416,468,520],"measured_values":[97465625.0,198613792.0,258850166.0,356624041.0,469956917.0,547336209.0,602822541.0,730178125.0,808471708.0,1027749667.0],"unit":"ns","throughput":[],"typical":{"estimate":1795527.7991508492,"lower_bound":1708111.9171270719,"upper_bound":1893877.004330107,"unit":"ns"},"mean":{"estimate":1783501.7938011293,"lower_bound":1723330.780660867,"upper_bound":1848499.4256730764,"unit":"ns"},"median":{"estimate":1754759.2992788462,"lower_bound":1693399.7927350427,"upper_bound":1874338.9423076923,"unit":"ns"},"median_abs_dev":{"estimate":109883.39219956443,"lower_bound":20557.900126290457,"upper_bound":181003.66957562903,"unit":"ns"},"slope":{"estimate":1795527.7991508492,"lower_bound":1708111.9171270719,"upper_bound":1893877.004330107,"unit":"ns"},"change":{"mean":{"estimate":-0.26519564704656295,"lower_bound":-0.29852758072688135,"upper_bound":-0.22868449043153335,"unit":"%"},"median":{"estimate":-0.2895911065239577,"lower_bound":-0.31770247369044724,"upper_bound":-0.22072169647396422,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_10_100000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[125830792.0,256031875.0,400987000.0,499192375.0,658565542.0,771684125.0,859931167.0,1036199667.0,1143984459.0,1255560709.0],"unit":"ns","throughput":[],"typical":{"estimate":63533948.34805195,"lower_bound":62715142.038461536,"upper_bound":64579440.40315789,"unit":"ns"},"mean":{"estimate":63883600.449821435,"lower_bound":62947876.48757886,"upper_bound":64858838.59291221,"unit":"ns"},"median":{"estimate":63781330.45833333,"lower_bound":62657221.4375,"upper_bound":65081782.30833334,"unit":"ns"},"median_abs_dev":{"estimate":1471068.1164920682,"lower_bound":443359.1671287977,"upper_bound":2738485.485169664,"unit":"ns"},"slope":{"estimate":63533948.34805195,"lower_bound":62715142.038461536,"upper_bound":64579440.40315789,"unit":"ns"},"change":{"mean":{"estimate":-0.11269753953702377,"lower_bound":-0.1419019403372004,"upper_bound":-0.08059653159835517,"unit":"%"},"median":{"estimate":-0.11433705789769177,"lower_bound":-0.1556615483221354,"upper_bound":-0.08349801200297258,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_100_100000","iteration_count":[8,16,24,32,40,48,56,64,72,80],"measured_values":[102877792.0,203490625.0,293629666.0,406037750.0,507540542.0,611091500.0,688612375.0,793434834.0,885333833.0,1013736000.0],"unit":"ns","throughput":[],"typical":{"estimate":12497493.683116883,"lower_bound":12359947.268034693,"upper_bound":12645556.65182419,"unit":"ns"},"mean":{"estimate":12558279.570426589,"lower_bound":12422941.626884922,"upper_bound":12687173.41,"unit":"ns"},"median":{"estimate":12680106.775,"lower_bound":12296649.55357143,"upper_bound":12718164.0625,"unit":"ns"},"median_abs_dev":{"estimate":170931.44667535918,"lower_bound":12587.042120285332,"upper_bound":336631.9377923389,"unit":"ns"},"slope":{"estimate":12497493.683116883,"lower_bound":12359947.268034693,"upper_bound":12645556.65182419,"unit":"ns"},"change":{"mean":{"estimate":-0.01818944407124168,"lower_bound":-0.0315304386007346,"upper_bound":-0.005409989801822747,"unit":"%"},"median":{"estimate":-0.0033739731552000496,"lower_bound":-0.04018411522714771,"upper_bound":0.004483505275459487,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_100_100000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[100198916.0,218912042.0,404811875.0,495993667.0,602741333.0,750284667.0,938810709.0,1067269875.0,1211013125.0,1304156375.0],"unit":"ns","throughput":[],"typical":{"estimate":130655490.38441558,"lower_bound":126692297.7217262,"upper_bound":132970389.19961977,"unit":"ns"},"mean":{"estimate":124668355.7851984,"lower_bound":117221889.12964287,"upper_bound":130951602.32825395,"unit":"ns"},"median":{"estimate":127731541.0,"lower_bound":116727218.875,"upper_bound":134115815.57142857,"unit":"ns"},"median_abs_dev":{"estimate":9792385.618483739,"lower_bound":851219.5885336697,"upper_bound":18280305.3912597,"unit":"ns"},"slope":{"estimate":130655490.38441558,"lower_bound":126692297.7217262,"upper_bound":132970389.19961977,"unit":"ns"},"change":{"mean":{"estimate":-0.018325050124571307,"lower_bound":-0.07623020336302841,"upper_bound":0.039307907730569,"unit":"%"},"median":{"estimate":0.005195744118460022,"lower_bound":-0.07036651205815603,"upper_bound":0.06925350261246388,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_10_100000","iteration_count":[47,94,141,188,235,282,329,376,423,470],"measured_values":[95682834.0,194227541.0,267099417.0,370542000.0,451088542.0,489081000.0,625139167.0,711263959.0,829166750.0,927565083.0],"unit":"ns","throughput":[],"typical":{"estimate":1921070.477922078,"lower_bound":1858052.858083659,"upper_bound":1959833.6476694841,"unit":"ns"},"mean":{"estimate":1934672.7430842624,"lower_bound":1877930.0363146109,"upper_bound":1985857.4205731384,"unit":"ns"},"median":{"estimate":1939865.3966903074,"lower_bound":1894322.1063829786,"upper_bound":2003386.5319148935,"unit":"ns"},"median_abs_dev":{"estimate":63225.20779781217,"lower_bound":6271.08891978308,"upper_bound":151993.5015199268,"unit":"ns"},"slope":{"estimate":1921070.477922078,"lower_bound":1858052.858083659,"upper_bound":1959833.6476694841,"unit":"ns"},"change":{"mean":{"estimate":-0.4208918138320068,"lower_bound":-0.5250883521774202,"upper_bound":-0.29059647096919305,"unit":"%"},"median":{"estimate":-0.33934875286921184,"lower_bound":-0.5252852190259583,"upper_bound":-0.23668771812314404,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_10_100000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[142236834.0,261992875.0,475058042.0,505860667.0,740757167.0,898500584.0,912717458.0,1141036083.0,1278898833.0,1371486208.0],"unit":"ns","throughput":[],"typical":{"estimate":70067391.12207793,"lower_bound":67997474.60045542,"upper_bound":72385114.31655844,"unit":"ns"},"mean":{"estimate":70410942.97220238,"lower_bound":67579224.85607144,"upper_bound":73342336.46875,"unit":"ns"},"median":{"estimate":71084176.08333334,"lower_bound":65498218.75,"upper_bound":74075716.7,"unit":"ns"},"median_abs_dev":{"estimate":5027802.815898648,"lower_bound":247076.66010725507,"upper_bound":8652725.845452175,"unit":"ns"},"slope":{"estimate":70067391.12207793,"lower_bound":67997474.60045542,"upper_bound":72385114.31655844,"unit":"ns"},"change":{"mean":{"estimate":0.06855058204256359,"lower_bound":-0.05661511194396754,"upper_bound":0.18878160521412088,"unit":"%"},"median":{"estimate":0.15668544122517725,"lower_bound":-0.0028662493633172526,"upper_bound":0.23838409149225903,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_100_100000","iteration_count":[8,16,24,32,40,48,56,64,72,80],"measured_values":[106639459.0,211461000.0,299683542.0,405517125.0,506538083.0,603736042.0,705841625.0,824286875.0,941392708.0,1040297375.0],"unit":"ns","throughput":[],"typical":{"estimate":12862494.07435065,"lower_bound":12658027.54172293,"upper_bound":12978191.612009238,"unit":"ns"},"mean":{"estimate":12850916.862832341,"lower_bound":12684111.385522567,"upper_bound":13025905.412624007,"unit":"ns"},"median":{"estimate":12775946.2890625,"lower_bound":12604314.732142856,"upper_bound":13110014.84375,"unit":"ns"},"median_abs_dev":{"estimate":315707.04685132904,"lower_bound":50479.13699444314,"upper_bound":483646.62840105593,"unit":"ns"},"slope":{"estimate":12862494.07435065,"lower_bound":12658027.54172293,"upper_bound":12978191.612009238,"unit":"ns"},"change":{"mean":{"estimate":-0.00008172382647331222,"lower_bound":-0.020010693202339568,"upper_bound":0.02171369467041855,"unit":"%"},"median":{"estimate":-0.013707044743426655,"lower_bound":-0.03275924600861868,"upper_bound":0.0213260715414158,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_100_100000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[161745083.0,277836583.0,422854542.0,539200250.0,675798375.0,739195292.0,802362459.0,958459292.0,1205018917.0,1268694000.0],"unit":"ns","throughput":[],"typical":{"estimate":126683813.77662338,"lower_bound":121500093.0890411,"upper_bound":132119225.98959805,"unit":"ns"},"mean":{"estimate":132996485.20396826,"lower_bound":125696271.62301588,"upper_bound":141192429.65,"unit":"ns"},"median":{"estimate":134345526.6388889,"lower_bound":123199215.33333333,"upper_bound":138918291.5,"unit":"ns"},"median_abs_dev":{"estimate":10439070.922869444,"lower_bound":1207056.3387537897,"upper_bound":21554209.12225297,"unit":"ns"},"slope":{"estimate":126683813.77662338,"lower_bound":121500093.0890411,"upper_bound":132119225.98959805,"unit":"ns"},"change":{"mean":{"estimate":0.17297604659856036,"lower_bound":0.09096902690547966,"upper_bound":0.264521960851587,"unit":"%"},"median":{"estimate":0.16733961428623534,"lower_bound":0.042216633046819,"upper_bound":0.28978401654262576,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_ordered_10_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[5405387917.0,5452011167.0,5421261583.0,5388722750.0,5413404667.0,5397228083.0,5445349291.0,5440807958.0,5408532792.0,5450068958.0],"unit":"ns","throughput":[],"typical":{"estimate":5422277516.6,"lower_bound":5408756609.190001,"upper_bound":5435871675.0,"unit":"ns"},"mean":{"estimate":5422277516.6,"lower_bound":5408756609.190001,"upper_bound":5435871675.0,"unit":"ns"},"median":{"estimate":5417333125.0,"lower_bound":5402880437.5,"upper_bound":5445438458.0,"unit":"ns"},"median_abs_dev":{"estimate":32305760.763958097,"lower_bound":5824331.727397442,"upper_bound":38415307.66129196,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":0.001210527357005775,"lower_bound":-0.00456616383630032,"upper_bound":0.006302502341199255,"unit":"%"},"median":{"estimate":0.0023719678574927183,"lower_bound":-0.0055289293474898304,"upper_bound":0.011146873858361772,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ordered_10_100000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[5477338875.0,5460186542.0,5481207500.0,5509203667.0,5519006792.0,5462065417.0,5456039417.0,5443730500.0,5477298333.0,5539629209.0],"unit":"ns","throughput":[],"typical":{"estimate":5482570625.2,"lower_bound":5465510768.815,"upper_bound":5501389197.77,"unit":"ns"},"mean":{"estimate":5482570625.2,"lower_bound":5465510768.815,"upper_bound":5501389197.77,"unit":"ns"},"median":{"estimate":5477318604.0,"lower_bound":5459052417.0,"upper_bound":5509203667.0,"unit":"ns"},"median_abs_dev":{"estimate":28474258.37818086,"lower_bound":2897865.445652604,"upper_bound":49477696.97159529,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.11569970783606986,"lower_bound":-0.15537613655093518,"upper_bound":-0.0685032399227389,"unit":"%"},"median":{"estimate":-0.15464969386771998,"lower_bound":-0.16342718254156408,"upper_bound":-0.00061863563588338,"unit":"%"},"change":"Improved"}} -{"reason":"group-complete","group_name":"ORE","benchmarks":["ORE/ore/range_gt_100/1000000","ORE/ore_decrypt/range_lt_10/1000000","ORE/ore_decrypt/range_gt_100/10000","ORE/ore_decrypt/range_lt_ordered_10/10000","ORE/ore/range_gt_10/1000000","ORE/ore/exact/1000000","ORE/ore/range_lt_100/1000000","ORE/ore/range_lt_100/10000","ORE/ore_decrypt/exact/10000","ORE/ore_decrypt/range_gt_100/1000000","ORE/ore_decrypt/range_lt_ordered_10/1000000","ORE/ore_decrypt/exact/1000000","ORE/ore_decrypt/range_gt_10/10000","ORE/ore/range_gt_10/10000","ORE/ore/range_gt_100/10000","ORE/ore/range_lt_10/10000","ORE/ore_decrypt/range_lt_10/10000","ORE/ore/range_lt_ordered_10/1000000","ORE/ore/range_lt_ordered_10/10000","ORE/ore_decrypt/range_lt_100/1000000","ORE/ore/range_lt_10/1000000","ORE/ore_decrypt/range_lt_100/10000","ORE/ore_decrypt/range_gt_10/1000000","ORE/ore/exact/10000","ORE/ore/exact/100000","ORE/ore_decrypt/exact/100000","ORE/ore/range_gt_10/100000","ORE/ore_decrypt/range_gt_10/100000","ORE/ore/range_gt_100/100000","ORE/ore_decrypt/range_gt_100/100000","ORE/ore/range_lt_10/100000","ORE/ore_decrypt/range_lt_10/100000","ORE/ore/range_lt_100/100000","ORE/ore_decrypt/range_lt_100/100000","ORE/ore/range_lt_ordered_10/100000","ORE/ore_decrypt/range_lt_ordered_10/100000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE"} +{"reason":"benchmark-complete","id":"ORE/ore/range_gt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_gt_10_100000","iteration_count":[417,834,1251,1668,2085,2502,2919,3336,3753,4170],"measured_values":[541499083.0,1112687625.0,1970853084.0,2381332250.0,2717736500.0,3484443708.0,3925985125.0,4626398459.0,5339353083.0,5614776167.0],"unit":"ns","throughput":[],"typical":{"estimate":1379022.2697499143,"lower_bound":1351338.597595711,"upper_bound":1412140.854466427,"unit":"ns"},"mean":{"estimate":1383287.48191818,"lower_bound":1341167.5942840013,"upper_bound":1435084.9775672317,"unit":"ns"},"median":{"estimate":1366639.5972122303,"lower_bound":1324223.4027064063,"upper_bound":1422689.337330136,"unit":"ns"},"median_abs_dev":{"estimate":65628.40985848404,"lower_bound":8678.047406185491,"upper_bound":119388.3062322025,"unit":"ns"},"slope":{"estimate":1379022.2697499143,"lower_bound":1351338.597595711,"upper_bound":1412140.854466427,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_gt_10_100000","iteration_count":[19,38,57,76,95,114,133,152,171,190],"measured_values":[526732625.0,1102360125.0,1608775875.0,2089966250.0,2674440667.0,3323891917.0,3744356917.0,4294699166.0,4814632542.0,5329348208.0],"unit":"ns","throughput":[],"typical":{"estimate":28219612.719343815,"lower_bound":28054455.459970348,"upper_bound":28499218.805036787,"unit":"ns"},"mean":{"estimate":28237750.070789468,"lower_bound":27956931.26525877,"upper_bound":28549810.29441886,"unit":"ns"},"median":{"estimate":28154402.692982458,"lower_bound":27937388.37894737,"upper_bound":28616807.565789476,"unit":"ns"},"median_abs_dev":{"estimate":152262.0399512834,"lower_bound":3551.823140098462,"upper_bound":931378.40389762,"unit":"ns"},"slope":{"estimate":28219612.719343815,"lower_bound":28054455.459970348,"upper_bound":28499218.805036787,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_gt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_gt_100_100000","iteration_count":[83,166,249,332,415,498,581,664,747,830],"measured_values":[543975000.0,1102662417.0,1561932041.0,2172263875.0,2851406125.0,3286055458.0,3871716792.0,4552995958.0,5036974708.0,5682290833.0],"unit":"ns","throughput":[],"typical":{"estimate":6752595.235174464,"lower_bound":6646764.821081108,"upper_bound":6816004.961956593,"unit":"ns"},"mean":{"estimate":6659148.384258941,"lower_bound":6546038.197349397,"upper_bound":6761087.328507364,"unit":"ns"},"median":{"estimate":6653214.502151463,"lower_bound":6553915.662650603,"upper_bound":6846133.53373494,"unit":"ns"},"median_abs_dev":{"estimate":155339.31048886274,"lower_bound":20662.26793015887,"upper_bound":334662.83511457243,"unit":"ns"},"slope":{"estimate":6752595.235174464,"lower_bound":6646764.821081108,"upper_bound":6816004.961956593,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_gt_100_100000","iteration_count":[12,24,36,48,60,72,84,96,108,120],"measured_values":[590660833.0,1113445459.0,1708722708.0,2279846166.0,2911576083.0,3405679625.0,4076850958.0,4603766125.0,5068511000.0,5731192500.0],"unit":"ns","throughput":[],"typical":{"estimate":47695167.18831169,"lower_bound":47277129.46459538,"upper_bound":48123233.47553191,"unit":"ns"},"mean":{"estimate":47758441.763845906,"lower_bound":47271587.470822334,"upper_bound":48256245.70449405,"unit":"ns"},"median":{"estimate":47628366.3125,"lower_bound":47197588.53703704,"upper_bound":48526268.05,"unit":"ns"},"median_abs_dev":{"estimate":760010.1968803816,"lower_bound":145064.41785792634,"upper_bound":1476293.5102413811,"unit":"ns"},"slope":{"estimate":47695167.18831169,"lower_bound":47277129.46459538,"upper_bound":48123233.47553191,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_10_100000","iteration_count":[375,750,1125,1500,1875,2250,2625,3000,3375,3750],"measured_values":[534974750.0,1095068583.0,1569239125.0,2299250292.0,2742920542.0,3720798375.0,4256582334.0,4519493000.0,5558433083.0,5747091125.0],"unit":"ns","throughput":[],"typical":{"estimate":1566185.6467809523,"lower_bound":1514002.764659176,"upper_bound":1616302.014556213,"unit":"ns"},"mean":{"estimate":1523853.62605164,"lower_bound":1471173.3942946666,"upper_bound":1579015.519666455,"unit":"ns"},"median":{"estimate":1519527.65,"lower_bound":1444745.1445333334,"upper_bound":1621555.1748571428,"unit":"ns"},"median_abs_dev":{"estimate":112947.81864757538,"lower_bound":19522.773659801376,"upper_bound":161494.15850597245,"unit":"ns"},"slope":{"estimate":1566185.6467809523,"lower_bound":1514002.764659176,"upper_bound":1616302.014556213,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_10_100000","iteration_count":[20,40,60,80,100,120,140,160,180,200],"measured_values":[580265041.0,1128292166.0,1685074500.0,2267655250.0,2803244875.0,3433411959.0,3914820916.0,4520093125.0,5212648708.0,5663049083.0],"unit":"ns","throughput":[],"typical":{"estimate":28401066.313766234,"lower_bound":28142247.581462584,"upper_bound":28682764.604530018,"unit":"ns"},"mean":{"estimate":28378303.037799604,"lower_bound":28175384.366611503,"upper_bound":28605338.595178425,"unit":"ns"},"median":{"estimate":28282913.723125,"lower_bound":28084575.0,"upper_bound":28652425.056944445,"unit":"ns"},"median_abs_dev":{"estimate":332698.17412355106,"lower_bound":70503.9992951788,"upper_bound":623013.1200993083,"unit":"ns"},"slope":{"estimate":28401066.313766234,"lower_bound":28142247.581462584,"upper_bound":28682764.604530018,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_100_100000","iteration_count":[83,166,249,332,415,498,581,664,747,830],"measured_values":[551059584.0,1073733500.0,1573166875.0,2169676292.0,2863928292.0,3261997209.0,3787300458.0,4417626167.0,5015883042.0,5694026291.0],"unit":"ns","throughput":[],"typical":{"estimate":6694529.1791894855,"lower_bound":6568817.410493274,"upper_bound":6787432.445405206,"unit":"ns"},"mean":{"estimate":6615849.862385254,"lower_bound":6513325.388260218,"upper_bound":6720871.5720767,"unit":"ns"},"median":{"estimate":6594733.647590362,"lower_bound":6501721.825301205,"upper_bound":6756662.048042169,"unit":"ns"},"median_abs_dev":{"estimate":145378.88967443097,"lower_bound":23429.357050914252,"upper_bound":294120.85919879325,"unit":"ns"},"slope":{"estimate":6694529.1791894855,"lower_bound":6568817.410493274,"upper_bound":6787432.445405206,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_100/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_100_100000","iteration_count":[12,24,36,48,60,72,84,96,108,120],"measured_values":[581007208.0,1176711709.0,1633638084.0,2307465834.0,2870523958.0,3300506959.0,3934647000.0,4506712042.0,4964302875.0,5686214125.0],"unit":"ns","throughput":[],"typical":{"estimate":46830727.7530303,"lower_bound":46291754.83278146,"upper_bound":47340187.352810174,"unit":"ns"},"mean":{"estimate":47171724.070178576,"lower_bound":46469625.673799604,"upper_bound":47873049.30758185,"unit":"ns"},"median":{"estimate":47165017.40625,"lower_bound":45965767.36111111,"upper_bound":48129666.650000006,"unit":"ns"},"median_abs_dev":{"estimate":1561502.1013236288,"lower_bound":341203.9394374162,"upper_bound":2039736.550294106,"unit":"ns"},"slope":{"estimate":46830727.7530303,"lower_bound":46291754.83278146,"upper_bound":47340187.352810174,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_ordered_10_100000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[880584792.0,1750336083.0,2623175625.0,2109022333.0,706744291.0,866724250.0,993600000.0,1161758458.0,1272025166.0,1433145959.0],"unit":"ns","throughput":[],"typical":{"estimate":185584139.9168831,"lower_bound":147430922.8815095,"upper_bound":288224566.5248869,"unit":"ns"},"mean":{"estimate":401501658.14650786,"lower_bound":215991063.19928575,"upper_bound":621450208.3597025,"unit":"ns"},"median":{"estimate":144836924.4583333,"lower_bound":141942857.14285713,"upper_bound":874391875.0,"unit":"ns"},"median_abs_dev":{"estimate":5180842.686753305,"lower_bound":575372.2162351012,"upper_bound":542522949.5915723,"unit":"ns"},"slope":{"estimate":185584139.9168831,"lower_bound":147430922.8815095,"upper_bound":288224566.5248869,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ordered_10_100000","iteration_count":[4,8,12,16,20,24,28,32,36,40],"measured_values":[668223375.0,1403319291.0,2126737625.0,2695468083.0,3467278583.0,4184839917.0,4983647459.0,5751391333.0,6534042208.0,7145911542.0],"unit":"ns","throughput":[],"typical":{"estimate":178080868.66883117,"lower_bound":175208277.3112607,"upper_bound":179712841.46705395,"unit":"ns"},"mean":{"estimate":175376525.4154861,"lower_bound":172492187.5758924,"upper_bound":177993124.34736112,"unit":"ns"},"median":{"estimate":176321523.3958333,"lower_bound":171417542.53125,"upper_bound":178859194.203125,"unit":"ns"},"median_abs_dev":{"estimate":3916924.9036806864,"lower_bound":1052388.8490563794,"upper_bound":8306458.617952139,"unit":"ns"},"slope":{"estimate":178080868.66883117,"lower_bound":175208277.3112607,"upper_bound":179712841.46705395,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_hybrid_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_hybrid_ordered_10_100000","iteration_count":[402,804,1206,1608,2010,2412,2814,3216,3618,4020],"measured_values":[455982708.0,959501250.0,1628467417.0,2179276750.0,2654023042.0,3129472792.0,3492145125.0,4079736500.0,4640080625.0,4996751875.0],"unit":"ns","throughput":[],"typical":{"estimate":1271794.2667894296,"lower_bound":1254104.5507743151,"upper_bound":1298623.0395757924,"unit":"ns"},"mean":{"estimate":1268617.6713405198,"lower_bound":1226171.2960751797,"upper_bound":1307673.7172857933,"unit":"ns"},"median":{"estimate":1275536.7865533442,"lower_bound":1218191.309079602,"upper_bound":1323882.1778606963,"unit":"ns"},"median_abs_dev":{"estimate":58873.84838119822,"lower_bound":20448.792407483692,"upper_bound":118993.57961181997,"unit":"ns"},"slope":{"estimate":1271794.2667894296,"lower_bound":1254104.5507743151,"upper_bound":1298623.0395757924,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_hybrid_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_hybrid_ordered_10_100000","iteration_count":[20,40,60,80,100,120,140,160,180,200],"measured_values":[563447083.0,1130293834.0,1884639625.0,2273686542.0,3166591583.0,4078655333.0,3941790000.0,4596504959.0,5163361583.0,5493369167.0],"unit":"ns","throughput":[],"typical":{"estimate":29044948.73974026,"lower_bound":28064602.36676768,"upper_bound":30893463.89687684,"unit":"ns"},"mean":{"estimate":29495213.927700393,"lower_bound":28363171.86117064,"upper_bound":30825692.142373018,"unit":"ns"},"median":{"estimate":28553211.951388888,"lower_bound":28172354.15,"upper_bound":31410660.416666668,"unit":"ns"},"median_abs_dev":{"estimate":577047.8474895186,"lower_bound":87780.50844158288,"upper_bound":3524786.431487905,"unit":"ns"},"slope":{"estimate":29044948.73974026,"lower_bound":28064602.36676768,"upper_bound":30893463.89687684,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ore_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_range_lt_ore_ordered_10_100000","iteration_count":[431,862,1293,1724,2155,2586,3017,3448,3879,4310],"measured_values":[536311042.0,1073394000.0,1673205292.0,2204959625.0,2633848709.0,3079843125.0,3579065041.0,4350838958.0,4704162208.0,5384853917.0],"unit":"ns","throughput":[],"typical":{"estimate":1230704.9248561184,"lower_bound":1207471.68820029,"upper_bound":1251880.522512073,"unit":"ns"},"mean":{"estimate":1238603.2324752328,"lower_bound":1217650.072351209,"upper_bound":1259405.9713524887,"unit":"ns"},"median":{"estimate":1244788.9118329468,"lower_bound":1206585.764849188,"upper_bound":1264182.4802204175,"unit":"ns"},"median_abs_dev":{"estimate":40511.116232044726,"lower_bound":4403.610358038365,"upper_bound":62720.529845745514,"unit":"ns"},"slope":{"estimate":1230704.9248561184,"lower_bound":1207471.68820029,"upper_bound":1251880.522512073,"unit":"ns"},"change":null} +{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ore_ordered_10/100000","report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ore_ordered_10_100000","iteration_count":[20,40,60,80,100,120,140,160,180,200],"measured_values":[581560667.0,1097378833.0,1690728000.0,2207938500.0,2833715209.0,3359506167.0,4062331458.0,4400675666.0,5210557875.0,5776528291.0],"unit":"ns","throughput":[],"typical":{"estimate":28481545.285584416,"lower_bound":27888333.72010582,"upper_bound":28835397.819923725,"unit":"ns"},"mean":{"estimate":28297463.362892855,"lower_bound":27911479.929,"upper_bound":28678495.227995533,"unit":"ns"},"median":{"estimate":28257976.045,"lower_bound":27599231.25,"upper_bound":28949647.363214284,"unit":"ns"},"median_abs_dev":{"estimate":999504.0385052562,"lower_bound":99342.95775481033,"upper_bound":1073528.868960052,"unit":"ns"},"slope":{"estimate":28481545.285584416,"lower_bound":27888333.72010582,"upper_bound":28835397.819923725,"unit":"ns"},"change":null} +{"reason":"group-complete","group_name":"ORE","benchmarks":["ORE/ore/range_gt_10/100000","ORE/ore_decrypt/range_gt_10/100000","ORE/ore/range_gt_100/100000","ORE/ore_decrypt/range_gt_100/100000","ORE/ore/range_lt_10/100000","ORE/ore_decrypt/range_lt_10/100000","ORE/ore/range_lt_100/100000","ORE/ore_decrypt/range_lt_100/100000","ORE/ore/range_lt_ordered_10/100000","ORE/ore_decrypt/range_lt_ordered_10/100000","ORE/ore/range_lt_hybrid_ordered_10/100000","ORE/ore_decrypt/range_lt_hybrid_ordered_10/100000","ORE/ore/range_lt_ore_ordered_10/100000","ORE/ore_decrypt/range_lt_ore_ordered_10/100000"],"report_directory":"/Users/dan/Projects/CipherStash/benches/target/criterion/reports/ORE"} diff --git a/results/query/ore_rows_1000000.json b/results/query/ore_rows_1000000.json index 8053488..e69de29 100644 --- a/results/query/ore_rows_1000000.json +++ b/results/query/ore_rows_1000000.json @@ -1,13 +0,0 @@ -{"reason":"benchmark-complete","id":"ORE/ore/exact/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_exact_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[18552143541.0,18416422500.0,18452985792.0,18498167041.0,18453926333.0,18403969208.0,18498081292.0,18445438417.0,18428553833.0,18507314333.0],"unit":"ns","throughput":[],"typical":{"estimate":18465700229.0,"lower_bound":18439153766.7,"upper_bound":18493617745.5,"unit":"ns"},"mean":{"estimate":18465700229.0,"lower_bound":18439153766.7,"upper_bound":18493617745.5,"unit":"ns"},"median":{"estimate":18453456062.5,"lower_bound":18428553833.0,"upper_bound":18498167041.0,"unit":"ns"},"median_abs_dev":{"estimate":60533661.43491268,"lower_bound":6292092.019093037,"upper_bound":78708638.05264235,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.07684884507973988,"lower_bound":-0.11940512259695935,"upper_bound":-0.035117178883203606,"unit":"%"},"median":{"estimate":-0.04221232106134398,"lower_bound":-0.13306968176110034,"upper_bound":-0.011800161189673974,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/exact/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_exact_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[18481063917.0,18454722000.0,18532150750.0,18502887958.0,19683452084.0,18574521583.0,18455517584.0,18431763375.0,18533762959.0,18531336667.0],"unit":"ns","throughput":[],"typical":{"estimate":18618117887.7,"lower_bound":18478770512.8,"upper_bound":18863945567.0,"unit":"ns"},"mean":{"estimate":18618117887.7,"lower_bound":18478770512.8,"upper_bound":18863945567.0,"unit":"ns"},"median":{"estimate":18517112312.5,"lower_bound":18455517584.0,"upper_bound":18553336166.5,"unit":"ns"},"median_abs_dev":{"estimate":69280166.57583117,"lower_bound":1798610.2276682854,"upper_bound":113602616.58605039,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.06528825108761838,"lower_bound":-0.10098203535209396,"upper_bound":-0.03422371297298862,"unit":"%"},"median":{"estimate":-0.0470176984915156,"lower_bound":-0.08917936649140157,"upper_bound":-0.03515277992835886,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_10_1000000","iteration_count":[48,96,144,192,240,288,336,384,432,480],"measured_values":[92331541.0,183205542.0,265712000.0,379895541.0,431949875.0,527657875.0,613254375.0,717114083.0,816091375.0,906692167.0],"unit":"ns","throughput":[],"typical":{"estimate":1869188.0274891774,"lower_bound":1840784.2698175043,"upper_bound":1889855.0890804597,"unit":"ns"},"mean":{"estimate":1875843.5051248348,"lower_bound":1845851.7365932541,"upper_bound":1908437.269341084,"unit":"ns"},"median":{"estimate":1878213.3028645832,"lower_bound":1832145.3993055555,"upper_bound":1908391.0625,"unit":"ns"},"median_abs_dev":{"estimate":58082.00195425493,"lower_bound":14417.578964661761,"upper_bound":92870.34806059697,"unit":"ns"},"slope":{"estimate":1869188.0274891774,"lower_bound":1840784.2698175043,"upper_bound":1889855.0890804597,"unit":"ns"},"change":{"mean":{"estimate":-0.08244695531911939,"lower_bound":-0.13148579150213316,"upper_bound":-0.03159741153680967,"unit":"%"},"median":{"estimate":-0.06998842406834993,"lower_bound":-0.16033410644252988,"upper_bound":0.007525734668192063,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_10_1000000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[140530000.0,279558042.0,398783834.0,485166542.0,633570709.0,861178292.0,982028208.0,1017560833.0,1179392916.0,1341668542.0],"unit":"ns","throughput":[],"typical":{"estimate":66516224.46103896,"lower_bound":64553101.34266463,"upper_bound":68571023.87371135,"unit":"ns"},"mean":{"estimate":66873390.897916675,"lower_bound":64681306.19833334,"upper_bound":68956894.9395,"unit":"ns"},"median":{"estimate":66773699.71666667,"lower_bound":63597552.0625,"upper_bound":70144872.0,"unit":"ns"},"median_abs_dev":{"estimate":4853528.1835014,"lower_bound":356537.36519269866,"upper_bound":6232692.219477599,"unit":"ns"},"slope":{"estimate":66516224.46103896,"lower_bound":64553101.34266463,"upper_bound":68571023.87371135,"unit":"ns"},"change":{"mean":{"estimate":0.09085253910266244,"lower_bound":0.04058366868494484,"upper_bound":0.13511750246685203,"unit":"%"},"median":{"estimate":0.11350086733825093,"lower_bound":0.045636210936014,"upper_bound":0.1706779339734814,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_gt_100/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_gt_100_1000000","iteration_count":[8,16,24,32,40,48,56,64,72,80],"measured_values":[107006459.0,204317750.0,323258417.0,410508208.0,523629125.0,637597209.0,735639708.0,825889375.0,937861042.0,1036086792.0],"unit":"ns","throughput":[],"typical":{"estimate":13029022.459415585,"lower_bound":12956603.18598434,"upper_bound":13140842.216710113,"unit":"ns"},"mean":{"estimate":13083502.981790675,"lower_bound":12950104.577224206,"upper_bound":13223835.018593749,"unit":"ns"},"median":{"estimate":13058287.965277778,"lower_bound":12889733.2,"upper_bound":13283275.1875,"unit":"ns"},"median_abs_dev":{"estimate":280770.11514189653,"lower_bound":81969.65493641348,"upper_bound":388955.0993196666,"unit":"ns"},"slope":{"estimate":13029022.459415585,"lower_bound":12956603.18598434,"upper_bound":13140842.216710113,"unit":"ns"},"change":{"mean":{"estimate":-0.056318523847986635,"lower_bound":-0.07146715354810661,"upper_bound":-0.04160679922176208,"unit":"%"},"median":{"estimate":-0.06188587770722909,"lower_bound":-0.07778872442293616,"upper_bound":-0.033731437680352694,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_gt_100/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_gt_100_1000000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[100628959.0,216942042.0,319082416.0,441704583.0,542051417.0,638663458.0,720689583.0,900531958.0,1158549792.0,1240434125.0],"unit":"ns","throughput":[],"typical":{"estimate":116574515.78961039,"lower_bound":106701196.42502731,"upper_bound":122916604.17168675,"unit":"ns"},"mean":{"estimate":110903444.07809524,"lower_bound":106145365.56452383,"upper_bound":116519228.6197619,"unit":"ns"},"median":{"estimate":108440652.2,"lower_bound":104699782.1904762,"upper_bound":117234779.125,"unit":"ns"},"median_abs_dev":{"estimate":4600277.4829037525,"lower_bound":1494358.7335248247,"upper_bound":14495845.1701723,"unit":"ns"},"slope":{"estimate":116574515.78961039,"lower_bound":106701196.42502731,"upper_bound":122916604.17168675,"unit":"ns"},"change":{"mean":{"estimate":-0.627361180873824,"lower_bound":-0.8345929966499501,"upper_bound":-0.014664173518557467,"unit":"%"},"median":{"estimate":-0.0910316588954787,"lower_bound":-0.14558147869494542,"upper_bound":-0.031877989603001144,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_10_1000000","iteration_count":[37,74,111,148,185,222,259,296,333,370],"measured_values":[96466708.0,186889417.0,278256792.0,367736958.0,536331792.0,579835667.0,640293208.0,725973500.0,834145208.0,925893833.0],"unit":"ns","throughput":[],"typical":{"estimate":2526691.637065637,"lower_bound":2481244.757396991,"upper_bound":2616524.615972569,"unit":"ns"},"mean":{"estimate":2556737.5302917203,"lower_bound":2495146.5739424066,"upper_bound":2644200.013091913,"unit":"ns"},"median":{"estimate":2505879.2552552554,"lower_bound":2484709.1756756757,"upper_bound":2607208.3243243243,"unit":"ns"},"median_abs_dev":{"estimate":40678.67856384534,"lower_bound":3743.267968318887,"upper_bound":143739.9917751323,"unit":"ns"},"slope":{"estimate":2526691.637065637,"lower_bound":2481244.757396991,"upper_bound":2616524.615972569,"unit":"ns"},"change":{"mean":{"estimate":0.24516972700188555,"lower_bound":0.20006151820078313,"upper_bound":0.30078550079416155,"unit":"%"},"median":{"estimate":0.19157175346728672,"lower_bound":0.18054353037908122,"upper_bound":0.2601431564420158,"unit":"%"},"change":"Regressed"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_10_1000000","iteration_count":[2,4,6,8,10,12,14,16,18,20],"measured_values":[120491042.0,240116708.0,382063375.0,497495667.0,621045666.0,720565375.0,857792375.0,962829875.0,1118922125.0,1219111334.0],"unit":"ns","throughput":[],"typical":{"estimate":61213137.55974026,"lower_bound":60626994.6392573,"upper_bound":61880335.981481485,"unit":"ns"},"mean":{"estimate":61285622.48188492,"lower_bound":60600793.695375994,"upper_bound":62033369.4155754,"unit":"ns"},"median":{"estimate":61113225.31428571,"lower_bound":60146317.79166667,"upper_bound":62162340.277777776,"unit":"ns"},"median_abs_dev":{"estimate":1512590.1906828282,"lower_bound":61077.021723165,"upper_bound":2245974.226792652,"unit":"ns"},"slope":{"estimate":61213137.55974026,"lower_bound":60626994.6392573,"upper_bound":61880335.981481485,"unit":"ns"},"change":{"mean":{"estimate":-0.006557907598646051,"lower_bound":-0.031357311102208296,"upper_bound":0.02008889511692757,"unit":"%"},"median":{"estimate":-0.00922979802004087,"lower_bound":-0.05038073669938248,"upper_bound":0.025032890501313965,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_100/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_100_1000000","iteration_count":[8,16,24,32,40,48,56,64,72,80],"measured_values":[100019167.0,195923833.0,298314708.0,394645541.0,494364083.0,579871042.0,674200125.0,781909125.0,876781375.0,981648333.0],"unit":"ns","throughput":[],"typical":{"estimate":12207347.197402596,"lower_bound":12135002.810149586,"upper_bound":12273688.9282453,"unit":"ns"},"mean":{"estimate":12265457.816135911,"lower_bound":12180101.888577875,"upper_bound":12351148.756798364,"unit":"ns"},"median":{"estimate":12257921.8625,"lower_bound":12148988.393229168,"upper_bound":12381226.328125,"unit":"ns"},"median_abs_dev":{"estimate":134607.45903690616,"lower_bound":39492.078046062685,"upper_bound":258812.13386766566,"unit":"ns"},"slope":{"estimate":12207347.197402596,"lower_bound":12135002.810149586,"upper_bound":12273688.9282453,"unit":"ns"},"change":{"mean":{"estimate":-0.09684209803067856,"lower_bound":-0.1058305680974634,"upper_bound":-0.08715473921646978,"unit":"%"},"median":{"estimate":-0.09949687808691965,"lower_bound":-0.11075578412984921,"upper_bound":-0.08395744028278239,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_100/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_100_1000000","iteration_count":[1,2,3,4,5,6,7,8,9,10],"measured_values":[99816584.0,241466458.0,377929542.0,439947667.0,617424250.0,702921667.0,838419250.0,1003105417.0,1105104875.0,1181616083.0],"unit":"ns","throughput":[],"typical":{"estimate":120615228.14805195,"lower_bound":117967700.39348371,"upper_bound":123156030.46271929,"unit":"ns"},"mean":{"estimate":118326509.94686508,"lower_bound":113214724.00733629,"upper_bound":122451545.06984127,"unit":"ns"},"median":{"estimate":120253703.78571428,"lower_bound":114074262.525,"upper_bound":124088803.84027778,"unit":"ns"},"median_abs_dev":{"estimate":4693347.263826426,"lower_bound":1421888.1401564458,"upper_bound":11372569.215186538,"unit":"ns"},"slope":{"estimate":120615228.14805195,"lower_bound":117967700.39348371,"upper_bound":123156030.46271929,"unit":"ns"},"change":{"mean":{"estimate":-0.000553042638222534,"lower_bound":-0.06680316128712162,"upper_bound":0.06417143162147178,"unit":"%"},"median":{"estimate":0.04322571318814572,"lower_bound":-0.0529087867900786,"upper_bound":0.09516360588810602,"unit":"%"},"change":"NoChange"}} -{"reason":"benchmark-complete","id":"ORE/ore/range_lt_ordered_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_range_lt_ordered_10_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[53164901208.0,62765459542.0,65442200375.0,63025703541.0,63162961666.0,63109415708.0,63075897500.0,63340631041.0,63297718000.0,63252550916.0],"unit":"ns","throughput":[],"typical":{"estimate":62363743949.7,"lower_bound":60141913373.2075,"upper_bound":63793709880.6325,"unit":"ns"},"mean":{"estimate":62363743949.7,"lower_bound":60141913373.2075,"upper_bound":63793709880.6325,"unit":"ns"},"median":{"estimate":63136188687.0,"lower_bound":62920678521.0,"upper_bound":63297718000.0,"unit":"ns"},"median_abs_dev":{"estimate":206000996.42735124,"lower_bound":62055828.29538882,"upper_bound":1791349071.2413967,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.07182137631227425,"lower_bound":-0.11148470663338966,"upper_bound":-0.025388338266350365,"unit":"%"},"median":{"estimate":-0.0860665134374492,"lower_bound":-0.08954903468343856,"upper_bound":-0.049692942733929324,"unit":"%"},"change":"Improved"}} -{"reason":"benchmark-complete","id":"ORE/ore_decrypt/range_lt_ordered_10/1000000","report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE/ore_decrypt_range_lt_ordered_10_1000000","iteration_count":[1,1,1,1,1,1,1,1,1,1],"measured_values":[66440666125.0,66350871958.0,66754950458.0,67019326709.0,66536834667.0,67341184625.0,66738836458.0,65961977458.0,63763653542.0,63404514500.0],"unit":"ns","throughput":[],"typical":{"estimate":66031281650.0,"lower_bound":65160299575.0,"upper_bound":66731704783.40501,"unit":"ns"},"mean":{"estimate":66031281650.0,"lower_bound":65160299575.0,"upper_bound":66731704783.40501,"unit":"ns"},"median":{"estimate":66488750396.0,"lower_bound":65057262750.0,"upper_bound":66879081583.5,"unit":"ns"},"median_abs_dev":{"estimate":587830874.4639158,"lower_bound":137854153.73429954,"upper_bound":1895847257.107383,"unit":"ns"},"slope":null,"change":{"mean":{"estimate":-0.04386863793297602,"lower_bound":-0.06205944376615574,"upper_bound":-0.025618212236110768,"unit":"%"},"median":{"estimate":-0.04262675332399868,"lower_bound":-0.06289452265679885,"upper_bound":-0.01146251102359308,"unit":"%"},"change":"Improved"}} -{"reason":"group-complete","group_name":"ORE","benchmarks":["ORE/ore_decrypt/range_lt_ordered_10/100000","ORE/ore/range_lt_10/100000","ORE/ore_decrypt/range_gt_100/10000","ORE/ore_decrypt/range_lt_ordered_10/10000","ORE/ore_decrypt/range_lt_100/100000","ORE/ore_decrypt/range_gt_10/100000","ORE/ore/range_lt_ordered_10/100000","ORE/ore/range_gt_100/100000","ORE/ore/range_lt_100/10000","ORE/ore_decrypt/exact/10000","ORE/ore/range_lt_100/100000","ORE/ore_decrypt/range_gt_10/10000","ORE/ore/range_gt_10/10000","ORE/ore_decrypt/range_gt_100/100000","ORE/ore_decrypt/range_lt_10/100000","ORE/ore/range_gt_100/10000","ORE/ore/range_lt_10/10000","ORE/ore_decrypt/range_lt_10/10000","ORE/ore/range_lt_ordered_10/10000","ORE/ore/exact/100000","ORE/ore_decrypt/exact/100000","ORE/ore/range_gt_10/100000","ORE/ore_decrypt/range_lt_100/10000","ORE/ore/exact/10000","ORE/ore/exact/1000000","ORE/ore_decrypt/exact/1000000","ORE/ore/range_gt_10/1000000","ORE/ore_decrypt/range_gt_10/1000000","ORE/ore/range_gt_100/1000000","ORE/ore_decrypt/range_gt_100/1000000","ORE/ore/range_lt_10/1000000","ORE/ore_decrypt/range_lt_10/1000000","ORE/ore/range_lt_100/1000000","ORE/ore_decrypt/range_lt_100/1000000","ORE/ore/range_lt_ordered_10/1000000","ORE/ore_decrypt/range_lt_ordered_10/1000000"],"report_directory":"/Users/dan/Projects/CipherStash/ore-benches/target/criterion/reports/ORE"} diff --git a/sql/indexes/integer_encrypted_10000000_down.sql b/sql/indexes/integer_encrypted_10000000_down.sql index ad69b5d..5092cb2 100644 --- a/sql/indexes/integer_encrypted_10000000_down.sql +++ b/sql/indexes/integer_encrypted_10000000_down.sql @@ -1 +1,2 @@ +DROP INDEX IF EXISTS integer_encrypted_10000000_ore_index; DROP INDEX IF EXISTS integer_encrypted_10000000_eql_index; diff --git a/sql/indexes/integer_encrypted_10000000_up.sql b/sql/indexes/integer_encrypted_10000000_up.sql index 080226f..058c5d2 100644 --- a/sql/indexes/integer_encrypted_10000000_up.sql +++ b/sql/indexes/integer_encrypted_10000000_up.sql @@ -1,5 +1,5 @@ CREATE INDEX -integer_encrypted_10000000_eql_index +integer_encrypted_10000000_ore_index ON integer_encrypted_10000000 ( - value eql_v2.encrypted_operator_class + eql_v2.ore_block_u64_8_256(value) ); diff --git a/sql/indexes/integer_encrypted_1000000_down.sql b/sql/indexes/integer_encrypted_1000000_down.sql index dfb01b7..20e96ee 100644 --- a/sql/indexes/integer_encrypted_1000000_down.sql +++ b/sql/indexes/integer_encrypted_1000000_down.sql @@ -1 +1,2 @@ +DROP INDEX IF EXISTS integer_encrypted_1000000_ore_index; DROP INDEX IF EXISTS integer_encrypted_1000000_eql_index; diff --git a/sql/indexes/integer_encrypted_1000000_up.sql b/sql/indexes/integer_encrypted_1000000_up.sql index 21d89b7..ea72762 100644 --- a/sql/indexes/integer_encrypted_1000000_up.sql +++ b/sql/indexes/integer_encrypted_1000000_up.sql @@ -1,5 +1,5 @@ CREATE INDEX -integer_encrypted_1000000_eql_index +integer_encrypted_1000000_ore_index ON integer_encrypted_1000000 ( - value eql_v2.encrypted_operator_class + eql_v2.ore_block_u64_8_256(value) ); diff --git a/sql/indexes/integer_encrypted_100000_down.sql b/sql/indexes/integer_encrypted_100000_down.sql index d22397b..ce03bef 100644 --- a/sql/indexes/integer_encrypted_100000_down.sql +++ b/sql/indexes/integer_encrypted_100000_down.sql @@ -1 +1,2 @@ +DROP INDEX IF EXISTS integer_encrypted_100000_ore_index; DROP INDEX IF EXISTS integer_encrypted_100000_eql_index; diff --git a/sql/indexes/integer_encrypted_100000_up.sql b/sql/indexes/integer_encrypted_100000_up.sql index b356598..4dd57f1 100644 --- a/sql/indexes/integer_encrypted_100000_up.sql +++ b/sql/indexes/integer_encrypted_100000_up.sql @@ -1,5 +1,5 @@ CREATE INDEX -integer_encrypted_100000_eql_index +integer_encrypted_100000_ore_index ON integer_encrypted_100000 ( - value eql_v2.encrypted_operator_class + eql_v2.ore_block_u64_8_256(value) ); diff --git a/sql/indexes/integer_encrypted_10000_down.sql b/sql/indexes/integer_encrypted_10000_down.sql index 0625716..1a2cb54 100644 --- a/sql/indexes/integer_encrypted_10000_down.sql +++ b/sql/indexes/integer_encrypted_10000_down.sql @@ -1 +1,2 @@ +DROP INDEX IF EXISTS integer_encrypted_10000_ore_index; DROP INDEX IF EXISTS integer_encrypted_10000_eql_index; diff --git a/sql/indexes/integer_encrypted_10000_up.sql b/sql/indexes/integer_encrypted_10000_up.sql index fb2a9f4..f8d9f28 100644 --- a/sql/indexes/integer_encrypted_10000_up.sql +++ b/sql/indexes/integer_encrypted_10000_up.sql @@ -1,5 +1,5 @@ CREATE INDEX -integer_encrypted_10000_eql_index +integer_encrypted_10000_ore_index ON integer_encrypted_10000 ( - value eql_v2.encrypted_operator_class + eql_v2.ore_block_u64_8_256(value) ); diff --git a/sql/indexes/integer_encrypted_down.sql b/sql/indexes/integer_encrypted_down.sql index ecf0064..62fe0df 100644 --- a/sql/indexes/integer_encrypted_down.sql +++ b/sql/indexes/integer_encrypted_down.sql @@ -1 +1,2 @@ +DROP INDEX IF EXISTS integer_encrypted_ore_index; DROP INDEX IF EXISTS integer_encrypted_eql_index; diff --git a/sql/indexes/integer_encrypted_up.sql b/sql/indexes/integer_encrypted_up.sql index c1de77b..08077bb 100644 --- a/sql/indexes/integer_encrypted_up.sql +++ b/sql/indexes/integer_encrypted_up.sql @@ -1,5 +1,11 @@ +-- Functional B-tree index over the ORE term. Range queries and ORDER BY are +-- only accelerated when the predicate is written in extractor form, e.g. +-- WHERE eql_v2.ore_block_u64_8_256(value) > eql_v2.ore_block_u64_8_256($1::jsonb) +-- ORDER BY eql_v2.ore_block_u64_8_256(value) +-- The natural `WHERE value > $1` form falls through to a sequential scan +-- because the `>` operator on eql_v2_encrypted is plpgsql and not inlinable. CREATE INDEX -integer_encrypted_eql_index +integer_encrypted_ore_index ON integer_encrypted ( - value eql_v2.encrypted_operator_class + eql_v2.ore_block_u64_8_256(value) ); diff --git a/sql/indexes/string_encrypted_10000000_up.sql b/sql/indexes/string_encrypted_10000000_up.sql index 600e376..242c255 100644 --- a/sql/indexes/string_encrypted_10000000_up.sql +++ b/sql/indexes/string_encrypted_10000000_up.sql @@ -9,9 +9,3 @@ string_encrypted_10000000_gin_index ON string_encrypted_10000000 USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_10000000_eql_index -ON string_encrypted_10000000 ( - value eql_v2.encrypted_operator_class -); diff --git a/sql/indexes/string_encrypted_1000000_up.sql b/sql/indexes/string_encrypted_1000000_up.sql index e75d40b..20137da 100644 --- a/sql/indexes/string_encrypted_1000000_up.sql +++ b/sql/indexes/string_encrypted_1000000_up.sql @@ -9,9 +9,3 @@ string_encrypted_1000000_gin_index ON string_encrypted_1000000 USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_1000000_eql_index -ON string_encrypted_1000000 ( - value eql_v2.encrypted_operator_class -); diff --git a/sql/indexes/string_encrypted_100000_up.sql b/sql/indexes/string_encrypted_100000_up.sql index 8fda3f0..9473e3a 100644 --- a/sql/indexes/string_encrypted_100000_up.sql +++ b/sql/indexes/string_encrypted_100000_up.sql @@ -9,9 +9,3 @@ string_encrypted_100000_gin_index ON string_encrypted_100000 USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_100000_eql_index -ON string_encrypted_100000 ( - value eql_v2.encrypted_operator_class -); diff --git a/sql/indexes/string_encrypted_10000_up.sql b/sql/indexes/string_encrypted_10000_up.sql index c6ed969..a1e31c3 100644 --- a/sql/indexes/string_encrypted_10000_up.sql +++ b/sql/indexes/string_encrypted_10000_up.sql @@ -9,9 +9,3 @@ string_encrypted_10000_gin_index ON string_encrypted_10000 USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_10000_eql_index -ON string_encrypted_10000 ( - value eql_v2.encrypted_operator_class -); diff --git a/sql/indexes/string_encrypted_down.sql b/sql/indexes/string_encrypted_down.sql index 14013bb..4adee2c 100644 --- a/sql/indexes/string_encrypted_down.sql +++ b/sql/indexes/string_encrypted_down.sql @@ -1,3 +1,3 @@ DROP INDEX IF EXISTS string_encrypted_hash_index; DROP INDEX IF EXISTS string_encrypted_gin_index; -DROP INDEX IF EXISTS string_encrypted_eql_index; \ No newline at end of file +DROP INDEX IF EXISTS string_encrypted_eql_index; diff --git a/sql/indexes/string_encrypted_up.sql b/sql/indexes/string_encrypted_up.sql index 3afdc44..3990671 100644 --- a/sql/indexes/string_encrypted_up.sql +++ b/sql/indexes/string_encrypted_up.sql @@ -9,10 +9,3 @@ string_encrypted_gin_index ON string_encrypted USING GIN ( eql_v2.bloom_filter(value) ); - -CREATE INDEX -string_encrypted_eql_index -ON string_encrypted ( - value eql_v2.encrypted_operator_class -); - diff --git a/src/bin/encrypt_json_large.rs b/src/bin/encrypt_json_large.rs index 3bca947..6f3da6d 100644 --- a/src/bin/encrypt_json_large.rs +++ b/src/bin/encrypt_json_large.rs @@ -19,7 +19,7 @@ use anyhow::Result; use cipherstash_client::{ eql::Identifier, schema::{ - column::{Index, IndexType}, + column::{ArrayIndexMode, Index, IndexType}, ColumnConfig, ColumnType, }, }; @@ -144,11 +144,12 @@ async fn main() -> Result<()> { .identifier(Identifier::new("json_large_encrypted", "value")) .column_config( ColumnConfig::build("value") - .casts_as(ColumnType::JsonB) + .casts_as(ColumnType::Json) // FIXME: There is no convenience method for SteVec yet on Index .add_index(Index::new(IndexType::SteVec { prefix: "value".to_string(), term_filters: Default::default(), + array_index_mode: ArrayIndexMode::default(), })), ) .build()? diff --git a/src/bin/encrypt_json_small.rs b/src/bin/encrypt_json_small.rs index 5e9ed89..164fc94 100644 --- a/src/bin/encrypt_json_small.rs +++ b/src/bin/encrypt_json_small.rs @@ -18,7 +18,7 @@ use anyhow::Result; use cipherstash_client::{ eql::Identifier, schema::{ - column::{Index, IndexType}, + column::{ArrayIndexMode, Index, IndexType}, ColumnConfig, ColumnType, }, }; @@ -58,11 +58,12 @@ async fn main() -> Result<()> { .identifier(Identifier::new("json_small_encrypted", "value")) .column_config( ColumnConfig::build("value") - .casts_as(ColumnType::JsonB) + .casts_as(ColumnType::Json) // FIXME: There is no convenience method for SteVec yet on Index .add_index(Index::new(IndexType::SteVec { prefix: "value".to_string(), term_filters: Default::default(), + array_index_mode: ArrayIndexMode::default(), })), ) .build()? diff --git a/src/bin/encrypt_string.rs b/src/bin/encrypt_string.rs index c27afe5..4d41059 100644 --- a/src/bin/encrypt_string.rs +++ b/src/bin/encrypt_string.rs @@ -41,7 +41,7 @@ async fn main() -> Result<()> { .identifier(Identifier::new(&table_name, "value")) .column_config( ColumnConfig::build("value") - .casts_as(ColumnType::Utf8Str) + .casts_as(ColumnType::Text) .add_index(Index::new_unique()) .add_index(Index::new_match()), ) diff --git a/src/lib.rs b/src/lib.rs index ac52ec5..eb15355 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,28 +1,32 @@ use anyhow::{Context, Result}; use cipherstash_client::{ - config::EnvSource, - credentials::ServiceCredentials, encryption::{Plaintext, QueryOp, ScopedCipher}, eql::{decrypt_eql, encrypt_eql, EqlCiphertext, EqlOperation, Identifier, PreparedPlaintext}, schema::{column::IndexType, ColumnConfig}, - ZeroKMSConfig, + zerokms::{EnvKeyProvider, FallbackKeyProvider, ZeroKMSBuilder}, + AutoStrategy, }; use fake::{Dummy, Fake}; use serde_json::json; use sqlx::{postgres::PgPoolOptions, types::Json, QueryBuilder}; +use stack_profile::ProfileStore; use std::borrow::Cow; use std::env; use std::fmt::Debug; use std::sync::Arc; -pub async fn init_scoped_cipher() -> Result>> { - let client = ZeroKMSConfig::builder() - .add_source(EnvSource::new()) - .build_with_client_key() - .context("failed to build config")? - .create_client(); - - let scoped_cipher = ScopedCipher::init_default(Arc::new(client)).await?; +pub async fn init_scoped_cipher() -> Result>> { + let zerokms = ZeroKMSBuilder::auto() + .context("failed to build ZeroKMS client")? + .with_key_provider(FallbackKeyProvider::new( + EnvKeyProvider, + ProfileStore::default(), + )) + .build() + .await + .context("failed to load client key")?; + + let scoped_cipher = ScopedCipher::init_default(Arc::new(zerokms)).await?; Ok(Arc::new(scoped_cipher)) } @@ -110,14 +114,7 @@ impl IngestOptions { .connect(&database_url) .await?; - let client = ZeroKMSConfig::builder() - .add_source(EnvSource::new()) - .build_with_client_key() - .expect("failed to build config") - .create_client(); - - let scoped_cipher = ScopedCipher::init_default(Arc::new(client)).await?; - let scoped_cipher = Arc::new(scoped_cipher); + let scoped_cipher = init_scoped_cipher().await?; let column_config = Cow::Borrowed(&self.column_config); @@ -169,7 +166,7 @@ pub struct WrappedJson(pub serde_json::Value); impl From for Plaintext { fn from(WrappedJson(value): WrappedJson) -> Self { - Plaintext::JsonB(Some(value)) + Plaintext::Json(Some(value)) } } @@ -203,7 +200,7 @@ impl EncryptedQueryBuilder { pub async fn build_query( self, plaintext: T, - cipher: Arc>, + cipher: Arc>, ) -> Result where T: Into + Send + Debug, @@ -232,7 +229,7 @@ impl EncryptedQueryBuilder { pub struct EncryptedQuery { pub eql: EqlCiphertext, pub statement: String, - scoped_cipher: Arc<ScopedCipher<ServiceCredentials>>, + scoped_cipher: Arc<ScopedCipher<AutoStrategy>>, } impl EncryptedQuery {