zjregee commented on issue #14610:
URL: https://github.com/apache/datafusion/issues/14610#issuecomment-2653494265
Hi, @alamb, I have a few questions and hope to get some help.
Is the optimization mentioned here similar to using the following method
instead?
```rust
for _ in 0..number {
write!(builder, "{}", string)?;
}
builder.append_value("")
```
This seems to work well when the number of repetitions is small, because it
reduces the number of memory copies, but when the number of repetitions is
large, the repeated memory expansion will lead to performance degradation.
The test results are as follows:
```text
repeat 3 times/repeat_string_view [size=1024, repeat_times=3]
time: [26.203 µs 26.286 µs 26.390 µs]
change: [-34.686% -34.382% -34.061%] (p = 0.00 <
0.05)
Performance has improved.
repeat 3 times/repeat_string [size=1024, repeat_times=3]
time: [26.313 µs 27.236 µs 28.189 µs]
change: [-32.881% -30.398% -27.949%] (p = 0.00 <
0.05)
Performance has improved.
repeat 3 times/repeat_large_string [size=1024, repeat_times=3]
time: [26.785 µs 26.876 µs 26.970 µs]
change: [-12.831% -11.753% -10.991%] (p = 0.00 <
0.05)
Performance has improved.
repeat 30 times/repeat_string_view [size=1024, repeat_times=30]
time: [255.89 µs 257.33 µs 258.78 µs]
change: [+91.575% +103.40% +116.22%] (p = 0.00 <
0.05)
Performance has regressed.
repeat 30 times/repeat_string [size=1024, repeat_times=30]
time: [228.56 µs 235.81 µs 244.25 µs]
change: [+64.653% +71.663% +80.334%] (p = 0.00 <
0.05)
Performance has regressed.
repeat 30 times/repeat_large_string [size=1024, repeat_times=30]
time: [238.48 µs 245.03 µs 252.40 µs]
change: [+76.311% +86.412% +98.466%] (p = 0.00 <
0.05)
Performance has regressed.
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]