ClickHouse/rust/skim
Azat Khuzhin 1107988a82 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 22:28:56 +02:00
..
.cargo Integrate skim into the client/local 2022-12-14 20:57:41 +01:00
include Use already written part of the query for fuzzy search (pass to skim) 2022-12-26 14:52:38 +01:00
src Use "exact" matching for fuzzy search 2023-02-04 14:15:02 +01:00
.gitignore Integrate skim into the client/local 2022-12-14 20:57:41 +01:00
build.rs.in Fix rust modules rebuild (previously ignores changes in cargo config.toml) 2022-12-27 10:35:50 +01:00
Cargo.lock skim: do not panic if terminal is not available 2022-12-14 21:01:48 +01:00
Cargo.toml Improve performance of BLAKE3 by 11% by enabling LTO for Rust 2023-05-06 22:28:56 +02:00
CMakeLists.txt What happens if I remove these 139 lines of code? 2023-01-03 18:35:31 +00:00