├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── flamegraph-1.svg ├── readme.md └── src └── main.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | /sled 4 | /rocks 5 | perf.data 6 | perf.data.old 7 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "aho-corasick" 5 | version = "0.7.3" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | dependencies = [ 8 | "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 9 | ] 10 | 11 | [[package]] 12 | name = "ansi_term" 13 | version = "0.11.0" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | dependencies = [ 16 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 17 | ] 18 | 19 | [[package]] 20 | name = "arrayvec" 21 | version = "0.4.10" 22 | source = "registry+https://github.com/rust-lang/crates.io-index" 23 | dependencies = [ 24 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 25 | ] 26 | 27 | [[package]] 28 | name = "atty" 29 | version = "0.2.11" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | dependencies = [ 32 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 33 | "termion 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 34 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 35 | ] 36 | 37 | [[package]] 38 | name = "autocfg" 39 | version = "0.1.4" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | 42 | [[package]] 43 | name = "backtrace" 44 | version = "0.3.24" 45 | source = "registry+https://github.com/rust-lang/crates.io-index" 46 | dependencies = [ 47 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 48 | "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 49 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 50 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 52 | ] 53 | 54 | [[package]] 55 | name = "backtrace-sys" 56 | version = "0.1.28" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | dependencies = [ 59 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 60 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 61 | ] 62 | 63 | [[package]] 64 | name = "bincode" 65 | version = "1.1.4" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | dependencies = [ 68 | "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 69 | "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 70 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 71 | ] 72 | 73 | [[package]] 74 | name = "bindgen" 75 | version = "0.49.2" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | dependencies = [ 78 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 79 | "cexpr 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 80 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 85 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 86 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 87 | "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 88 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 89 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 90 | "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 91 | "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 92 | "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 93 | ] 94 | 95 | [[package]] 96 | name = "bitflags" 97 | version = "1.0.4" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | 100 | [[package]] 101 | name = "byteorder" 102 | version = "1.3.1" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | 105 | [[package]] 106 | name = "cc" 107 | version = "1.0.37" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | dependencies = [ 110 | "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 111 | ] 112 | 113 | [[package]] 114 | name = "cexpr" 115 | version = "0.3.5" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | dependencies = [ 118 | "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 119 | ] 120 | 121 | [[package]] 122 | name = "cfg-if" 123 | version = "0.1.9" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | 126 | [[package]] 127 | name = "clang-sys" 128 | version = "0.28.1" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | dependencies = [ 131 | "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 134 | ] 135 | 136 | [[package]] 137 | name = "clap" 138 | version = "2.33.0" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | dependencies = [ 141 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 142 | "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 143 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 144 | "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 145 | "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 147 | "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 148 | ] 149 | 150 | [[package]] 151 | name = "cloudabi" 152 | version = "0.0.3" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | dependencies = [ 155 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 156 | ] 157 | 158 | [[package]] 159 | name = "crc32fast" 160 | version = "1.2.0" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | dependencies = [ 163 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 164 | ] 165 | 166 | [[package]] 167 | name = "crossbeam-channel" 168 | version = "0.3.9" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | dependencies = [ 171 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 172 | ] 173 | 174 | [[package]] 175 | name = "crossbeam-deque" 176 | version = "0.2.0" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | dependencies = [ 179 | "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 181 | ] 182 | 183 | [[package]] 184 | name = "crossbeam-epoch" 185 | version = "0.3.1" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | dependencies = [ 188 | "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 189 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 191 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 192 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 193 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 194 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 195 | ] 196 | 197 | [[package]] 198 | name = "crossbeam-epoch" 199 | version = "0.7.1" 200 | source = "registry+https://github.com/rust-lang/crates.io-index" 201 | dependencies = [ 202 | "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 203 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 207 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 208 | ] 209 | 210 | [[package]] 211 | name = "crossbeam-utils" 212 | version = "0.2.2" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | dependencies = [ 215 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 216 | ] 217 | 218 | [[package]] 219 | name = "crossbeam-utils" 220 | version = "0.6.5" 221 | source = "registry+https://github.com/rust-lang/crates.io-index" 222 | dependencies = [ 223 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 224 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 225 | ] 226 | 227 | [[package]] 228 | name = "either" 229 | version = "1.5.2" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | 232 | [[package]] 233 | name = "env_logger" 234 | version = "0.6.1" 235 | source = "registry+https://github.com/rust-lang/crates.io-index" 236 | dependencies = [ 237 | "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 238 | "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 239 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 240 | "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 241 | "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 242 | ] 243 | 244 | [[package]] 245 | name = "failure" 246 | version = "0.1.5" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | dependencies = [ 249 | "backtrace 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 250 | ] 251 | 252 | [[package]] 253 | name = "fs2" 254 | version = "0.4.3" 255 | source = "registry+https://github.com/rust-lang/crates.io-index" 256 | dependencies = [ 257 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 258 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 259 | ] 260 | 261 | [[package]] 262 | name = "fs_extra" 263 | version = "1.1.0" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | 266 | [[package]] 267 | name = "fxhash" 268 | version = "0.2.1" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | dependencies = [ 271 | "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 272 | ] 273 | 274 | [[package]] 275 | name = "glob" 276 | version = "0.3.0" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | 279 | [[package]] 280 | name = "historian" 281 | version = "4.0.3" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | 284 | [[package]] 285 | name = "humantime" 286 | version = "1.2.0" 287 | source = "registry+https://github.com/rust-lang/crates.io-index" 288 | dependencies = [ 289 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 290 | ] 291 | 292 | [[package]] 293 | name = "jemalloc-sys" 294 | version = "0.3.2" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | dependencies = [ 297 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 298 | "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 299 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 300 | ] 301 | 302 | [[package]] 303 | name = "jemallocator" 304 | version = "0.3.2" 305 | source = "registry+https://github.com/rust-lang/crates.io-index" 306 | dependencies = [ 307 | "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 308 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 309 | ] 310 | 311 | [[package]] 312 | name = "lazy_static" 313 | version = "1.3.0" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | 316 | [[package]] 317 | name = "libc" 318 | version = "0.2.62" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | 321 | [[package]] 322 | name = "libloading" 323 | version = "0.5.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | dependencies = [ 326 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 327 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 328 | ] 329 | 330 | [[package]] 331 | name = "librocksdb-sys" 332 | version = "6.1.2" 333 | source = "registry+https://github.com/rust-lang/crates.io-index" 334 | dependencies = [ 335 | "bindgen 0.49.2 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 338 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 339 | ] 340 | 341 | [[package]] 342 | name = "lock_api" 343 | version = "0.3.1" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | dependencies = [ 346 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 347 | ] 348 | 349 | [[package]] 350 | name = "log" 351 | version = "0.4.8" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | dependencies = [ 354 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 355 | ] 356 | 357 | [[package]] 358 | name = "memchr" 359 | version = "2.2.0" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | 362 | [[package]] 363 | name = "memoffset" 364 | version = "0.2.1" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | 367 | [[package]] 368 | name = "nodrop" 369 | version = "0.1.13" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | 372 | [[package]] 373 | name = "nom" 374 | version = "4.2.3" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | dependencies = [ 377 | "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 378 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 379 | ] 380 | 381 | [[package]] 382 | name = "num_cpus" 383 | version = "1.10.0" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | dependencies = [ 386 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 387 | ] 388 | 389 | [[package]] 390 | name = "numtoa" 391 | version = "0.1.0" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | 394 | [[package]] 395 | name = "pagecache" 396 | version = "0.18.0" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | dependencies = [ 399 | "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 400 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 401 | "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 402 | "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 403 | "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 404 | "fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 405 | "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 406 | "historian 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 410 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 411 | "zstd 0.4.27+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 412 | ] 413 | 414 | [[package]] 415 | name = "parking_lot" 416 | version = "0.9.0" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | dependencies = [ 419 | "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 420 | "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 421 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 422 | ] 423 | 424 | [[package]] 425 | name = "parking_lot_core" 426 | version = "0.6.2" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | dependencies = [ 429 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 430 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 431 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 432 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 433 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 434 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 435 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 436 | ] 437 | 438 | [[package]] 439 | name = "peeking_take_while" 440 | version = "0.1.2" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | 443 | [[package]] 444 | name = "proc-macro2" 445 | version = "0.4.30" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | dependencies = [ 448 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 449 | ] 450 | 451 | [[package]] 452 | name = "quick-error" 453 | version = "1.2.2" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | 456 | [[package]] 457 | name = "quote" 458 | version = "0.6.12" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | dependencies = [ 461 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 462 | ] 463 | 464 | [[package]] 465 | name = "rayon" 466 | version = "1.0.3" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | dependencies = [ 469 | "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 472 | ] 473 | 474 | [[package]] 475 | name = "rayon-core" 476 | version = "1.4.1" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | dependencies = [ 479 | "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 481 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 482 | "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 483 | ] 484 | 485 | [[package]] 486 | name = "redox_syscall" 487 | version = "0.1.54" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | 490 | [[package]] 491 | name = "redox_termios" 492 | version = "0.1.1" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | dependencies = [ 495 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 496 | ] 497 | 498 | [[package]] 499 | name = "regex" 500 | version = "1.1.6" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | dependencies = [ 503 | "aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 505 | "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 506 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 507 | "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 508 | ] 509 | 510 | [[package]] 511 | name = "regex-syntax" 512 | version = "0.6.6" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | dependencies = [ 515 | "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "rocksdb" 520 | version = "0.12.3" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | dependencies = [ 523 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 524 | "librocksdb-sys 6.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 525 | ] 526 | 527 | [[package]] 528 | name = "rustc-demangle" 529 | version = "0.1.14" 530 | source = "registry+https://github.com/rust-lang/crates.io-index" 531 | 532 | [[package]] 533 | name = "rustc_version" 534 | version = "0.2.3" 535 | source = "registry+https://github.com/rust-lang/crates.io-index" 536 | dependencies = [ 537 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 538 | ] 539 | 540 | [[package]] 541 | name = "scopeguard" 542 | version = "0.3.3" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | 545 | [[package]] 546 | name = "scopeguard" 547 | version = "1.0.0" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | 550 | [[package]] 551 | name = "semver" 552 | version = "0.9.0" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | dependencies = [ 555 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 556 | ] 557 | 558 | [[package]] 559 | name = "semver-parser" 560 | version = "0.7.0" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | 563 | [[package]] 564 | name = "serde" 565 | version = "1.0.98" 566 | source = "registry+https://github.com/rust-lang/crates.io-index" 567 | dependencies = [ 568 | "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", 569 | ] 570 | 571 | [[package]] 572 | name = "serde_bytes" 573 | version = "0.11.1" 574 | source = "registry+https://github.com/rust-lang/crates.io-index" 575 | dependencies = [ 576 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 577 | ] 578 | 579 | [[package]] 580 | name = "serde_derive" 581 | version = "1.0.91" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | dependencies = [ 584 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 585 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 586 | "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", 587 | ] 588 | 589 | [[package]] 590 | name = "shlex" 591 | version = "0.1.1" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | 594 | [[package]] 595 | name = "sled" 596 | version = "0.25.0" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | dependencies = [ 599 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 600 | "pagecache 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 602 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 603 | "serde_bytes 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", 604 | ] 605 | 606 | [[package]] 607 | name = "sled-vs-rocksdb" 608 | version = "0.1.0" 609 | dependencies = [ 610 | "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 611 | "rocksdb 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", 612 | "sled 0.25.0 (registry+https://github.com/rust-lang/crates.io-index)", 613 | ] 614 | 615 | [[package]] 616 | name = "smallvec" 617 | version = "0.6.10" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | 620 | [[package]] 621 | name = "strsim" 622 | version = "0.8.0" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | 625 | [[package]] 626 | name = "syn" 627 | version = "0.15.34" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | dependencies = [ 630 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 631 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 632 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 633 | ] 634 | 635 | [[package]] 636 | name = "termcolor" 637 | version = "1.0.4" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | dependencies = [ 640 | "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 641 | ] 642 | 643 | [[package]] 644 | name = "termion" 645 | version = "1.5.2" 646 | source = "registry+https://github.com/rust-lang/crates.io-index" 647 | dependencies = [ 648 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 649 | "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 650 | "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", 651 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 652 | ] 653 | 654 | [[package]] 655 | name = "textwrap" 656 | version = "0.11.0" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | dependencies = [ 659 | "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 660 | ] 661 | 662 | [[package]] 663 | name = "thread_local" 664 | version = "0.3.6" 665 | source = "registry+https://github.com/rust-lang/crates.io-index" 666 | dependencies = [ 667 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 668 | ] 669 | 670 | [[package]] 671 | name = "ucd-util" 672 | version = "0.1.3" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | 675 | [[package]] 676 | name = "unicode-width" 677 | version = "0.1.5" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | 680 | [[package]] 681 | name = "unicode-xid" 682 | version = "0.1.0" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | 685 | [[package]] 686 | name = "utf8-ranges" 687 | version = "1.0.2" 688 | source = "registry+https://github.com/rust-lang/crates.io-index" 689 | 690 | [[package]] 691 | name = "vec_map" 692 | version = "0.8.1" 693 | source = "registry+https://github.com/rust-lang/crates.io-index" 694 | 695 | [[package]] 696 | name = "version_check" 697 | version = "0.1.5" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | 700 | [[package]] 701 | name = "which" 702 | version = "2.0.1" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | dependencies = [ 705 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 706 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 707 | ] 708 | 709 | [[package]] 710 | name = "winapi" 711 | version = "0.3.7" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | dependencies = [ 714 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 715 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 716 | ] 717 | 718 | [[package]] 719 | name = "winapi-i686-pc-windows-gnu" 720 | version = "0.4.0" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | 723 | [[package]] 724 | name = "winapi-util" 725 | version = "0.1.2" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | dependencies = [ 728 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 729 | ] 730 | 731 | [[package]] 732 | name = "winapi-x86_64-pc-windows-gnu" 733 | version = "0.4.0" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | 736 | [[package]] 737 | name = "wincolor" 738 | version = "1.0.1" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | dependencies = [ 741 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 742 | "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 743 | ] 744 | 745 | [[package]] 746 | name = "zstd" 747 | version = "0.4.27+zstd.1.4.2" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | dependencies = [ 750 | "zstd-safe 1.4.12+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 751 | ] 752 | 753 | [[package]] 754 | name = "zstd-safe" 755 | version = "1.4.12+zstd.1.4.2" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | dependencies = [ 758 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 759 | "zstd-sys 1.4.12+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 760 | ] 761 | 762 | [[package]] 763 | name = "zstd-sys" 764 | version = "1.4.12+zstd.1.4.2" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | dependencies = [ 767 | "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", 768 | "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 769 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 770 | ] 771 | 772 | [metadata] 773 | "checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c" 774 | "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 775 | "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" 776 | "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" 777 | "checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" 778 | "checksum backtrace 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8ca8a0a1f68b5d04b8d006c726d16e38455fc8886c51fff7c2e6df32333378e2" 779 | "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" 780 | "checksum bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9f04a5e50dc80b3d5d35320889053637d15011aed5e66b66b37ae798c65da6f7" 781 | "checksum bindgen 0.49.2 (registry+https://github.com/rust-lang/crates.io-index)" = "846a1fba6535362a01487ef6b10f0275faa12e5c5d835c5c1c627aabc46ccbd6" 782 | "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" 783 | "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" 784 | "checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" 785 | "checksum cexpr 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7fa24eb00d5ffab90eaeaf1092ac85c04c64aaf358ea6f84505b8116d24c6af" 786 | "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" 787 | "checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" 788 | "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" 789 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 790 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 791 | "checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" 792 | "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" 793 | "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" 794 | "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" 795 | "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" 796 | "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" 797 | "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" 798 | "checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" 799 | "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" 800 | "checksum fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" 801 | "checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" 802 | "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 803 | "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" 804 | "checksum historian 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f653416eb756b69642a1f1498817970fafe409998a849622c27cc5b1b7df989c" 805 | "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" 806 | "checksum jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" 807 | "checksum jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" 808 | "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" 809 | "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" 810 | "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" 811 | "checksum librocksdb-sys 6.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6af56e6599bce586321e8ba8acf8a0a5e97431fd9ab49f9b69f92d93fe642c6" 812 | "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" 813 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 814 | "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" 815 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 816 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 817 | "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" 818 | "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" 819 | "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" 820 | "checksum pagecache 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "990fda699871cfa5107ecf1ed5c54cf3ba77df6c4cd345ee4a8e46fd289e9b37" 821 | "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 822 | "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" 823 | "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 824 | "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 825 | "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 826 | "checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" 827 | "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" 828 | "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" 829 | "checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" 830 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 831 | "checksum regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f0a0bcab2fd7d1d7c54fa9eae6f43eddeb9ce2e7352f8518a814a4f65d60c58" 832 | "checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" 833 | "checksum rocksdb 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e7523c32e26bf2ebc4540645961dafcbd086c652e8ecb563a507f432eb7636d" 834 | "checksum rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ccc78bfd5acd7bf3e89cffcf899e5cb1a52d6fafa8dec2739ad70c9577a57288" 835 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 836 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 837 | "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 838 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 839 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 840 | "checksum serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5626ac617da2f2d9c48af5515a21d5a480dbd151e01bb1c355e26a3e68113" 841 | "checksum serde_bytes 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aaff47db6ef8771cca5d88febef2f22f47f645420e51226374049f68c6b08569" 842 | "checksum serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)" = "101b495b109a3e3ca8c4cbe44cf62391527cdfb6ba15821c5ce80bcd5ea23f9f" 843 | "checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" 844 | "checksum sled 0.25.0 (registry+https://github.com/rust-lang/crates.io-index)" = "79ce644ada8ff18b4cdd7a601a7b781b164016eef99d08a32a43160f7bfc1455" 845 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 846 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 847 | "checksum syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)" = "a1393e4a97a19c01e900df2aec855a29f71cf02c402e2f443b8d2747c25c5dbe" 848 | "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" 849 | "checksum termion 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dde0593aeb8d47accea5392b39350015b5eccb12c0d98044d856983d89548dea" 850 | "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 851 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 852 | "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" 853 | "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" 854 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 855 | "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" 856 | "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" 857 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 858 | "checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" 859 | "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" 860 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 861 | "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" 862 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 863 | "checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" 864 | "checksum zstd 0.4.27+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4bc86b55a72ff12b5e10f28df6ccad71d4777b039f2d6a43c5c0750c9df009c9" 865 | "checksum zstd-safe 1.4.12+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c54bea995a3c9635d372e3e352809639d22a5578ed28b23ebcb85c0cd47894a" 866 | "checksum zstd-sys 1.4.12+zstd.1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e650014b0086a1588dfbe3cd4a8c19b03bc60eca5fd8043406e07f130a4f8bc" 867 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sled-vs-rocksdb" 3 | version = "0.1.0" 4 | authors = ["Pedro Bittencorut Arruda "] 5 | edition = "2018" 6 | 7 | [profile.release] 8 | lto = "thin" 9 | debug = true 10 | 11 | [dependencies] 12 | sled = { version = "0.25.0", features = ["compression"] } 13 | rocksdb = "0.12.3" 14 | jemallocator = "0.3.2" 15 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Toy benchmark comparing RocksDB and Sled 2 | 3 | I have created a sketch of a benchmark of RocksDB and Sled trying to decide whether I should use Sled instead of RocksDB for a new project I am developing. From the start, I like more the API of Sled (and its compilation time). However, RocksDB still seems to be the better alternative as of this date. Hopefully, as Sled stabilizes, these conclusions might be different. 4 | 5 | ## Workload 6 | 7 | This is a workload that somewhat resembles my intended usecase: populate the databse with many keys, each associated with a list, to which new elements ca be pushed (but not deleted). I have populated the both Sled and RocksDB with integer 32-bit keys ranging from 0 to 1mi and merged the 32-bit numbers from 0 to 10 8 | 9 | ## Running it 10 | 11 | I have used `jemallocator` and `lto=thin` to get the numbers below. Both database are using compression: RocksDB is using LZ4 and Sled has the `use_compression` enabled. I have also used `cargo flamegraph`, recommended by the author. I have tested them in a Ubuntu 18 Intel i5 machine with an HD drive and 8GB of RAM. 12 | 13 | ### Results 14 | 15 | Here is a sample run. I have made many other runs and thre results have been roughly the same: 16 | 17 | | | merging load | iterating load | disk usage | 18 | | ---| ---| ---| ---| 19 | | RocksDB | 100s | 0.85s | 34MB | 20 | | Sled | 207s | 1.85s | 226MB | 21 | 22 | 23 | RocksDB is still roughly twice as fast as Sled and beats Sled on disk usage. That number has been consistent through all runs. I have noticed that these number become more even when the number of keys is some orders of magnitude smaller, but the number of keys I have proposed is already on the small size of many applications. 24 | 25 | For this particular run, I have also got the following flamegraph: 26 | 27 | ![flamegraph](flamegraph-1.svg) 28 | 29 | ## Questions 30 | 31 | - Should these numbers be wildly different in SSD? My computer still uses HD. 32 | - Is this workload really that realistic? It is near to what I intend to use (merging and scanning). 33 | - Have I configured the system the right way? Anything that could have made both databses perform wildly better? 34 | 35 | 36 | Sled: 143.013933426s 37 | RocksDB: 120.89349547s 38 | [src/main.rs:96] count = 757935405000000 39 | Sled: 1.413365153s 40 | [src/main.rs:108] count = 757935405000000 41 | RocksDB: 1.745378177s 42 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use std::time::Instant; 2 | 3 | #[global_allocator] 4 | static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; 5 | 6 | /// Path of Sled DB in disk. 7 | pub const SLED_PATH: &str = "./sled"; 8 | 9 | /// Path to RocksDB in disk. 10 | pub const ROCKS_PATH: &str = "./rocks"; 11 | 12 | /// This is the concatenation merge operator in Sled. 13 | fn sled_cat(_key: &[u8], val: Option<&[u8]>, new: &[u8]) -> Option> { 14 | Some(val.into_iter().flatten().chain(new).cloned().collect()) 15 | } 16 | 17 | /// This is the concatenation merge operator in RocksDB. 18 | fn rocks_cat(_key: &[u8], val: Option<&[u8]>, new: &mut rocksdb::MergeOperands) -> Option> { 19 | Some( 20 | val.into_iter() 21 | .flatten() 22 | .chain(new.into_iter().flatten()) 23 | .cloned() 24 | .collect(), 25 | ) 26 | } 27 | 28 | /// Quick and dirty slice to u32. 29 | fn from_bytes(b: &[u8]) -> u32 { 30 | u32::from_le_bytes([b[0], b[1], b[2], b[3]]) 31 | } 32 | 33 | fn main() { 34 | // This is how we initialize Sled. 35 | let sled_db = { 36 | let config = sled::ConfigBuilder::default() 37 | .path(SLED_PATH) 38 | .use_compression(true) 39 | .io_buf_size(8_000_000) 40 | .page_consolidation_threshold(10) 41 | .cache_capacity(1_000_000_000) 42 | .flush_every_ms(Some(200)) 43 | .snapshot_after_ops(100_000_000_000) 44 | .print_profile_on_drop(true); 45 | 46 | let db = sled::Db::start(config.build()).unwrap(); 47 | db.set_merge_operator(sled_cat); 48 | 49 | db 50 | }; 51 | 52 | // This is how we initialize RocksDB. 53 | let rocks_db = { 54 | let mut options = rocksdb::Options::default(); 55 | options.create_if_missing(true); 56 | options.set_merge_operator("rocks_cat", rocks_cat, None); 57 | options.set_compression_type(rocksdb::DBCompressionType::Lz4); 58 | 59 | rocksdb::DB::open(&options, ROCKS_PATH).unwrap() 60 | }; 61 | 62 | // 1. Fill each DB with consecutive integers, all holding ntegers from 0 to 9 concatenated. 63 | 64 | // This is how we do it in Sled. 65 | let tic = Instant::now(); 66 | 67 | for i in 0..1_000_000u32 { 68 | for j in 0..10u32 { 69 | sled_db.merge(&i.to_le_bytes(), &j.to_le_bytes()).unwrap(); 70 | } 71 | } 72 | 73 | println!("Sled: {:?}", tic.elapsed()); 74 | 75 | // This is how we do it in RocksDB. 76 | let tic = Instant::now(); 77 | for i in 0..1_000_000u32 { 78 | for j in 0..10u32 { 79 | rocks_db.merge(&i.to_le_bytes(), &j.to_le_bytes()).unwrap(); 80 | } 81 | } 82 | 83 | println!("RocksDB: {:?}", tic.elapsed()); 84 | 85 | // 2. Now, sum all integers contained in all keys. 86 | 87 | // This is how we do it in Sled. 88 | let tic = Instant::now(); 89 | let count = sled_db 90 | .iter() 91 | .map(Result::unwrap) 92 | .map(|(_, val)| val.as_ref().windows(4).map(from_bytes).collect::>()) 93 | .flatten() 94 | .map(|i| i as u64) 95 | .sum::(); 96 | dbg!(count); 97 | 98 | println!("Sled: {:?}", tic.elapsed()); 99 | 100 | // This is how we do it in RocksDB. 101 | let tic = Instant::now(); 102 | let count = rocks_db 103 | .iterator(rocksdb::IteratorMode::Start) 104 | .map(|(_, val)| val.as_ref().windows(4).map(from_bytes).collect::>()) 105 | .flatten() 106 | .map(|i| i as u64) 107 | .sum::(); 108 | dbg!(count); 109 | 110 | println!("RocksDB: {:?}", tic.elapsed()); 111 | } 112 | --------------------------------------------------------------------------------