diff options
author | Abseil Team <absl-team@google.com> | 2023-04-14 04:27:57 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-04-14 04:29:04 -0700 |
commit | bce5bec5517f8c9ec448db9c2ffdf977dfff18eb (patch) | |
tree | 8d2d1711ea353b27e5cef04ffd7441fa196e34ad /absl/time/duration_test.cc | |
parent | 124e4f4edd1ec2d32193a673f8228f5b5c0ff9fa (diff) | |
download | abseil-bce5bec5517f8c9ec448db9c2ffdf977dfff18eb.tar.gz abseil-bce5bec5517f8c9ec448db9c2ffdf977dfff18eb.tar.bz2 abseil-bce5bec5517f8c9ec448db9c2ffdf977dfff18eb.zip |
Reland "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: 524256689
Change-Id: Ibf40d9e5411020179fa34c972349c7b58aa9d908
Diffstat (limited to 'absl/time/duration_test.cc')
-rw-r--r-- | absl/time/duration_test.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc index 3bb6081d..dcf7aad6 100644 --- a/absl/time/duration_test.cc +++ b/absl/time/duration_test.cc @@ -16,6 +16,7 @@ #include <winsock2.h> // for timeval #endif +#include <array> #include <cfloat> #include <chrono> // NOLINT(build/c++11) #include <cmath> @@ -1826,4 +1827,11 @@ TEST(Duration, AbslStringify) { EXPECT_EQ(absl::StrFormat("%v", d), absl::FormatDuration(d)); } +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 |