diff options
author | Abseil Team <absl-team@google.com> | 2023-02-02 00:48:53 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-02-02 00:49:39 -0800 |
commit | 9858e5421b14c9d72f2103af10010c5452c6d55f (patch) | |
tree | af3a6297b0af2933fe1e4a7755b4214848c8e3c5 /absl/time/duration_test.cc | |
parent | 7c7cafef4ff11979a26702080a2a4bf0dad7d856 (diff) | |
download | abseil-9858e5421b14c9d72f2103af10010c5452c6d55f.tar.gz abseil-9858e5421b14c9d72f2103af10010c5452c6d55f.tar.bz2 abseil-9858e5421b14c9d72f2103af10010c5452c6d55f.zip |
Get rid of tail padding within `absl::Duration`. This reduces memory usage needs when storing duration in containers (e.g. `vector<absl::Duration>` uses 25% less memory), and allows classes with `absl::Duration` fields to fit other stuff in memory previously used by tail padding (e.g. `std::optional<absl::Duration>` is now 16 bytes instead of 24).
PiperOrigin-RevId: 506543503
Change-Id: Ifeb2397c953a5d3da317a70ab49a3ebb85042344
Diffstat (limited to 'absl/time/duration_test.cc')
-rw-r--r-- | absl/time/duration_test.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc index b7abf4ba..84224f47 100644 --- a/absl/time/duration_test.cc +++ b/absl/time/duration_test.cc @@ -16,8 +16,9 @@ #include <winsock2.h> // for timeval #endif -#include <chrono> // NOLINT(build/c++11) +#include <array> #include <cfloat> +#include <chrono> // NOLINT(build/c++11) #include <cmath> #include <cstdint> #include <ctime> @@ -1853,4 +1854,11 @@ TEST(Duration, FormatParseRoundTrip) { #undef TEST_PARSE_ROUNDTRIP } +TEST(Duration, NoPadding) { + // Should match the size of a struct with uint32_t alignment and no padding. + using NoPadding = std::array<uint32_t, 3>; + EXPECT_EQ(sizeof(NoPadding), sizeof(absl::Duration)); + EXPECT_EQ(alignof(NoPadding), alignof(absl::Duration)); +} + } // namespace |