commit | 7743d2e73cf08f5c0b6e25acefd70428d523734a | [log] [tgz] |
---|---|---|
author | Sergiu Deitsch <sergiu.deitsch@gmail.com> | Mon Feb 21 22:43:32 2022 +0100 |
committer | Alex Stewart <alexs.mac@gmail.com> | Wed Mar 02 23:57:10 2022 +0000 |
tree | 25378953115c43b51aad19d2d52073f61ad79075 | |
parent | 9f32c42ba628dfa255cb85b0d16b29e29a8e802b [diff] |
Store ProductManifold instances in a tuple Since the number of manifolds used to initialize ProductManifold and their types are known at compile-time, it is possible to avoid storing pointers to the base class as required by a homogeneous, currently dynamically sized container. Instead, we can use std::tuple<> as a heterogenous container with the number of elements fixed at compile-time that allows us to store the concrete manifold realizations. The advantage of this approach is that we can bypass the vtable when iterating over each manifold within ProductManifold. The indirection is invoked only once while accessing the ProductManifoldImpl members. Additionally, potential dynamic memory allocations by a std::vector can be completely avoided. This makes the ProductManifold implementation more efficient both in memory and runtime. Change-Id: Ic71b0c175ab726f8992e9703f7666bca477baf19
Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. Ceres Solver can solve two kinds of problems.
Please see ceres-solver.org for more information.