summaryrefslogtreecommitdiff
path: root/absl/time/duration_test.cc
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2023-04-14 04:27:57 -0700
committerGravatar Copybara-Service <copybara-worker@google.com>2023-04-14 04:29:04 -0700
commitbce5bec5517f8c9ec448db9c2ffdf977dfff18eb (patch)
tree8d2d1711ea353b27e5cef04ffd7441fa196e34ad /absl/time/duration_test.cc
parent124e4f4edd1ec2d32193a673f8228f5b5c0ff9fa (diff)
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.cc8
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