about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-10-17 16:20:02 +0000
committerbors <bors@rust-lang.org>2024-10-17 16:20:02 +0000
commit86bd45979a964678b40b79156744f0057759d840 (patch)
treee84e17b3147fe27e6b879dcda130975b97d90ad2 /compiler/rustc_codegen_llvm/src
parent3a85d3fa785d95a7b7bcf4f160b67bffba7afd4a (diff)
parent4484085b18df4b10243b503a21602bb71836e8b3 (diff)
downloadrust-86bd45979a964678b40b79156744f0057759d840.tar.gz
rust-86bd45979a964678b40b79156744f0057759d840.zip
Auto merge of #130223 - LaihoE:faster_str_replace, r=thomcc
optimize str.replace

Adds a fast path for str.replace for the ascii to ascii case. This allows for autovectorizing the code. Also should this instead be done with specialization? This way we could remove one branch. I think it is the kind of branch that is easy to predict though.

Benchmark for the fast path (replace all "a" with "b" in the rust wikipedia article, using criterion) :
| N        | Speedup | Time New (ns) | Time Old (ns) |
|----------|---------|---------------|---------------|
| 2        | 2.03    | 13.567        | 27.576        |
| 8        | 1.73    | 17.478        | 30.259        |
| 11       | 2.46    | 18.296        | 45.055        |
| 16       | 2.71    | 17.181        | 46.526        |
| 37       | 4.43    | 18.526        | 81.997        |
| 64       | 8.54    | 18.670        | 159.470       |
| 200      | 9.82    | 29.634        | 291.010       |
| 2000     | 24.34   | 81.114        | 1974.300      |
| 20000    | 30.61   | 598.520       | 18318.000     |
| 1000000  | 29.31   | 33458.000     | 980540.000    |
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions