2022-12-03 11:55:46 +00:00
|
|
|
[package]
|
|
|
|
name = "_ch_rust_skim_rust"
|
|
|
|
version = "0.1.0"
|
|
|
|
edition = "2021"
|
|
|
|
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
skim = "0.10.2"
|
|
|
|
cxx = "1.0.83"
|
2022-12-14 15:45:00 +00:00
|
|
|
term = "0.7.0"
|
2022-12-03 11:55:46 +00:00
|
|
|
|
|
|
|
[build-dependencies]
|
|
|
|
cxx-build = "1.0.83"
|
|
|
|
|
|
|
|
[lib]
|
|
|
|
crate-type = ["staticlib"]
|
|
|
|
|
|
|
|
[profile.release]
|
|
|
|
debug = true
|
Improve performance of BLAKE3 by 11% by enabling LTO for Rust
LTO in Rust produces multiple definition of `rust_eh_personality' (and
few others), and to overcome this --allow-multiple-definition has been
added.
Query for benchmark:
SELECT ignore(BLAKE3(materialize('Lorem ipsum dolor sit amet, consectetur adipiscing elit'))) FROM numbers(1000000000) FORMAT `Null`
upstream : Elapsed: 2.494 sec. Processed 31.13 million rows, 249.08 MB (12.48 million rows/s., 99.86 MB/s.)
upstream + rust lto: Elapsed: 13.56 sec. Processed 191.9 million rows, 1.5400 GB (14.15 million rows/s., 113.22 MB/s.)
llvm BLAKE3 : Elapsed: 3.053 sec. Processed 43.24 million rows, 345.88 MB (14.16 million rows/s., 113.28 MB/s.)
Note, I thought about simply replacing it with BLAKE3 from LLVM, but:
- this will not solve LTO issues for Rust (and in future more libraries
could be added)
- it makes integrating_rust_libraries.md useless (and there is even blog
post)
So instead I've decided to add this quirk (--allow-multiple-definition)
to fix builds.
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2023-05-06 16:54:56 +00:00
|
|
|
|
|
|
|
[profile.release-thinlto]
|
|
|
|
inherits = "release"
|
|
|
|
# We use LTO here as well to slightly decrease binary size
|
|
|
|
lto = true
|