aboutsummaryrefslogtreecommitdiff
path: root/absl/time/duration_test.cc
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2023-02-02 00:48:53 -0800
committerCopybara-Service <copybara-worker@google.com>2023-02-02 00:49:39 -0800
commit9858e5421b14c9d72f2103af10010c5452c6d55f (patch)
treeaf3a6297b0af2933fe1e4a7755b4214848c8e3c5 /absl/time/duration_test.cc
parent7c7cafef4ff11979a26702080a2a4bf0dad7d856 (diff)
downloadabseil-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.cc10
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