On 04.11.2015 13:46, Ashod Nakashian wrote:
On Wed, Nov 4, 2015 at 6:22 AM, Stephan Bergmann <sbergman@redhat.com
<mailto:sbergman@redhat.com>> wrote:
On 11/04/2015 12:03 PM, Norbert Thiebaud wrote:
imo intentional mis-alignment should be heavily documented as such.
I would assume "non-optimal" padding to occur frequently enough to
just not care about it, unless there is indication that it severely
affects performance. Padding requirements can vary among platforms
(e.g., due to differences in integer width types or differences in
typedefs) and over time (e.g., when a member changes type or a
member's type changes). (And reordering members for tighter
packaging can even negatively improve execution speed in various
ways.) So I would rather assume cases to be heavily documented
where order is deliberately chosen to avoid padding.
It seems to me bit-fields are a bit overused. We should only need it in
the most heavily instantiated of classes and where there are too many
flags to make it worthwhile. For all other cases we're paying a cost in
terms of performance and maintainability with little footprint gains.
surprisingly contemporary compilers may even still have optimization
bugs related to bit fields,
cf. clang 3.5 mangling SvRefBase: http://fpaste.org/285206/
FWIW, I'd make most classes (esp. heavily used but not heavily
instantiated) to be human-intuitive first, while, for those that can
benefit, order members by size (largest first) and bitfields for flags.
agreed - profile first, then optimize where it's slow.
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.