-
Notifications
You must be signed in to change notification settings - Fork 359
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Significantly improve C++ logging performance by using C FFI instead …
…of arrow IPC (#4273) ### What * Fixes #4255 * Depends on #4282 So far we've been using the arrow IPC format to hand data from C++ to C/Rust. It turned out that this incurred a major performance cost on our api. Instead, using the C FFI interface (which still isn't exactly free) gives us a major performance boost in all of today's logging benchmarks: large point cloud: `0.58s -> 0.15s` many points: `17.10 -> 7.52s` large images: `2.90s -> 0.57s` _Execute times without prepare, single sample on before, median of three on after, all ran in a single process_ for comparison, numbers on main for Rust: large point clouds: `0.82s` many points: `3.87s` large images: `1.00s` _Execute times without prepare via Puffin, single sample, all ran in a single process. As always these comparisons are very tricky. Also there's lots of noise!_ There's still some significant discrepancy on `many points`. One likely source of this is repeated schema transfer. Need to do some more profiling before continuing. This PR also simplifies the serialization pipeline a little bit by removing `SerializedComponentBatch`, replacing it in favor of the existing `rerun::DataCell` in a few places. Left a comment in the code on the next steps towards evolving it towards an interface that's more similar to how things work in Rust. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/4273) (if applicable) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG - [PR Build Summary](https://build.rerun.io/pr/4273) - [Docs preview](https://rerun.io/preview/cb476d8f4fc9025855a0dd58c12c953c4741cf77/docs) <!--DOCS-PREVIEW--> - [Examples preview](https://rerun.io/preview/cb476d8f4fc9025855a0dd58c12c953c4741cf77/examples) <!--EXAMPLES-PREVIEW--> - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
- Loading branch information
Showing
127 changed files
with
1,093 additions
and
1,278 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.