commit | 25b1dd30a912e71e8c0094c1dd53e5af9fca10ff | [log] [tgz] |
---|---|---|
author | Brandon Castellano <bcastell@google.com> | Mon Feb 03 09:41:39 2025 -0800 |
committer | CQ Bot <fuchsia-internal-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Feb 03 09:41:39 2025 -0800 |
tree | bd9bad9cd701785ce5b6c117ee155b1a471040c9 | |
parent | 8f82d5dc64ef9b6e890bc0da2e55535cd525b197 [diff] |
[vfs][cpp] Allow in-place construction of node attributes Refactor internal wire table builder so that we can eliminate extra copies of node attribute data on the stack. Previously, the result of calling Vnode::GetAttributes was required to be stored on the stack, as it was assigned to an already constructed object. It also required unpacking the `zx::result` variant, which further complicated elision efforts. This should provide minor performance improvements to the GitStatus and StatPath benchmarks for memfs and f2fs. By instead calling Vnode::GetAttributes in the constructor of the wire table builder, we can ensure the compiler can optimize out the extra copy. See https://godbolt.org/z/59ExM74br for a more generic example that demonstrates this technique. Many thanks to the reviewers of https://fxrev.dev/1194315, the discussion there was crucial in discovering this approach. Bug: 391921991 Test: No functional change. Change-Id: I3d1b78df99cc8cbb98204bb06870824879fbf1a2 Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1195918 Reviewed-by: Chris Drouillard <cdrllrd@google.com> Commit-Queue: Brandon Castellano <bcastell@google.com>
Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.
We expect everyone interacting with our project to respect our code of conduct.
Read more about Fuchsia's principles.
See Getting Started.
See fuchsia.dev.