commit | c036c78196c7a9f36e48e6387691e8f4979aef5d | [log] [tgz] |
---|---|---|
author | Alexander Karatarakis <alex@karatarakis.com> | Sat Jun 12 12:20:17 2021 -0700 |
committer | Alexander Karatarakis <alex@karatarakis.com> | Fri Jun 18 15:04:17 2021 -0700 |
tree | 68f9c8afe4a3c734b7ce8e103ef5a78a7e6fa11a | |
parent | 51945e06194e83cfa4b32dd3cb9555855ddbd194 [diff] |
Reduce copies involved in Jet operations - Avoid copies in compound assignment operators (+=, -=, *=, /=) - Add r-value overloads to +,-,*./ operators Addition<3>/1000 +0.0382 +0.0382 2798 2905 2798 2905 Addition<10>/1000 -0.0009 -0.0009 4831 4827 4831 4827 Addition<15>/1000 -0.0011 -0.0010 8005 7996 8005 7996 Addition<25>/1000 +0.0014 +0.0014 13951 13970 13951 13970 Addition<32>/1000 +0.0010 +0.0009 13638 13651 13638 13651 Addition<200>/160 -0.1732 -0.1732 40301 33321 40300 33320 AdditionScalar<3>/1000 +0.0016 +0.0016 2493 2497 2493 2497 AdditionScalar<10>/1000 +0.0060 +0.0060 2701 2718 2701 2717 AdditionScalar<15>/1000 -0.0024 -0.0024 2598 2592 2598 2592 AdditionScalar<25>/1000 -0.0038 -0.0038 3730 3716 3730 3716 AdditionScalar<32>/1000 +0.0062 +0.0062 4137 4162 4137 4162 AdditionScalar<200>/160 -0.5626 -0.5626 19355 8466 19355 8466 Subtraction<3>/1000 -0.0011 -0.0012 3162 3158 3162 3158 Subtraction<10>/1000 -0.0027 -0.0026 4982 4969 4982 4969 Subtraction<15>/1000 -0.0112 -0.0112 7820 7733 7820 7733 Subtraction<25>/1000 +0.0181 +0.0181 13088 13325 13088 13325 Subtraction<32>/1000 -0.0007 -0.0007 14514 14505 14514 14504 Subtraction<200>/160 -0.1668 -0.1668 44586 37148 44586 37147 SubtractionScalar<3>/1000 -0.0028 -0.0028 2540 2533 2540 2533 SubtractionScalar<10>/1000 -0.0024 -0.0024 2682 2676 2682 2676 SubtractionScalar<15>/1000 -0.0023 -0.0023 2603 2597 2603 2597 SubtractionScalar<25>/1000 -0.0018 -0.0018 3570 3563 3570 3563 SubtractionScalar<32>/1000 -0.0012 -0.0012 4223 4218 4223 4218 SubtractionScalar<200>/160 -0.5070 -0.5070 20375 10044 20375 10044 Multiplication<3>/1000 -0.0543 -0.0544 6171 5836 6172 5836 Multiplication<10>/1000 -0.0617 -0.0617 11860 11128 11860 11128 Multiplication<15>/1000 -0.0106 -0.0106 17456 17271 17456 17271 Multiplication<25>/1000 -0.0114 -0.0114 27204 26893 27204 26893 Multiplication<32>/1000 -0.0125 -0.0125 32704 32293 32703 32293 Multiplication<200>/160 -0.3849 -0.3849 60557 37246 60557 37246 MultiplicationLeftScalar<3>/1000 +0.0005 +0.0005 3086 3088 3086 3088 MultiplicationLeftScalar<10>/1000 -0.0008 -0.0008 4486 4483 4486 4483 MultiplicationLeftScalar<15>/1000 -0.0010 -0.0010 5840 5834 5840 5834 MultiplicationLeftScalar<25>/1000 -0.0047 -0.0047 11350 11297 11350 11298 MultiplicationLeftScalar<32>/1000 -0.0014 -0.0014 13892 13873 13892 13873 MultiplicationLeftScalar<200>/160 -0.2646 -0.2646 28124 20682 28124 20682 MultiplicationRightScalar<3>/1000 +0.0024 +0.0025 3090 3098 3090 3098 MultiplicationRightScalar<10>/1000 +0.0008 +0.0009 4596 4600 4596 4600 MultiplicationRightScalar<15>/1000 -0.0033 -0.0033 5832 5812 5832 5812 MultiplicationRightScalar<25>/1000 -0.0005 -0.0005 11353 11347 11353 11347 MultiplicationRightScalar<32>/1000 +0.0043 +0.0043 14041 14102 14041 14102 MultiplicationRightScalar<200>/160 -0.2600 -0.2600 28104 20796 28104 20796 Division<3>/1000 -0.0006 -0.0006 8977 8972 8977 8972 Division<10>/1000 -0.0095 -0.0095 14613 14474 14613 14473 Division<15>/1000 -0.0081 -0.0081 23109 22922 23108 22922 Division<25>/1000 -0.0081 -0.0081 37292 36992 37292 36992 Division<32>/1000 -0.0234 -0.0234 41693 40718 41692 40717 Division<200>/160 -0.1306 -0.1306 44486 38677 44486 38677 DivisionLeftScalar<3>/1000 -0.0080 -0.0080 6683 6630 6683 6630 DivisionLeftScalar<10>/1000 -0.0018 -0.0018 9255 9239 9255 9238 DivisionLeftScalar<15>/1000 -0.0011 -0.0011 12180 12166 12180 12166 DivisionLeftScalar<25>/1000 +0.0060 +0.0060 22381 22515 22381 22516 DivisionLeftScalar<32>/1000 -0.0016 -0.0016 20159 20126 20159 20126 DivisionLeftScalar<200>/160 -0.2528 -0.2528 28773 21499 28772 21499 DivisionRightScalar<3>/1000 -0.0006 -0.0006 3784 3782 3784 3782 DivisionRightScalar<10>/1000 -0.0014 -0.0014 5699 5691 5699 5691 DivisionRightScalar<15>/1000 -0.0009 -0.0009 7490 7484 7490 7484 DivisionRightScalar<25>/1000 +0.0031 +0.0031 13751 13793 13751 13793 DivisionRightScalar<32>/1000 -0.0006 -0.0006 16712 16702 16712 16702 DivisionRightScalar<200>/160 -0.2532 -0.2532 28412 21217 28411 21217 MultiplyAndAdd<3>/1000 -0.0191 -0.0191 4382 4299 4382 4299 MultiplyAndAdd<10>/1000 -0.0060 -0.0060 10238 10176 10238 10176 MultiplyAndAdd<15>/1000 -0.0053 -0.0053 11696 11634 11696 11634 MultiplyAndAdd<25>/1000 -0.0171 -0.0171 19185 18858 19185 18858 MultiplyAndAdd<32>/1000 +0.0070 +0.0070 23783 23951 23783 23951 MultiplyAndAdd<200>/160 -0.1252 -0.1252 61470 53776 61469 53776 Change-Id: Ib366d5753ed4f398667766384e05389d45e0d444
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.