gpui_shared_string: Avoid intermediate string allocation when deserializing a `SharedString` (#65089)
## Summary
This PR improves how we deserialize SharedStrings. Since we moved to
`SmolStr` under the hood some time ago, which takes a string by `impl
AsRef<str>` in its constructor, we can get rid here of allocating a
string where possible in favor of using a stringvisitor during
deserialization. This provides us with some decent improvements.
## Testing
The benchmark results are the following:
| Case | `from_str` before | `from_str` after | Δ |
|---|---:|---:|---:|
| short (≤23 B, inline) | 23.1 µs | 11.6 µs | −50%
| short, escaped | 33.2 µs | 22.4 µs | −32% |
| long (~66 B, heap) | 46.9 µs | 31.4 µs | −33% |
| long, escaped | 307.6 µs | 267.6 µs | −13% |
## Self-review
- [X] I've reviewed my diff for quality, security, reliability, and
performance.
- [-] UI changes follow the
[checklist](https://zed.dev/docs/development/ui-checklist).
- [-] Tests cover the new or changed behavior.
Release Notes:
- N/A
- [GPUI] Improved memory usage and performance when deserializing
SharedStrings.
9dd6993e2eFinn Evers committed on 10/2/2026, 1:48:20 PM· committed by GitHubparent309f91f