]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Test the memory consumption of fundamental types. 1704/head
authorDavid Wells <wellsd2@rpi.edu>
Sun, 4 Oct 2015 19:53:16 +0000 (15:53 -0400)
committerDavid Wells <wellsd2@rpi.edu>
Sun, 4 Oct 2015 19:58:17 +0000 (15:58 -0400)
tests/base/memory_consumption_02.cc [new file with mode: 0644]
tests/base/memory_consumption_02.output [new file with mode: 0644]

diff --git a/tests/base/memory_consumption_02.cc b/tests/base/memory_consumption_02.cc
new file mode 100644 (file)
index 0000000..38f19fc
--- /dev/null
@@ -0,0 +1,75 @@
+// Test the sizes of fundamental types, their pointers, and vectors comprised
+// of either.
+#include <deal.II/base/config.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/memory_consumption.h>
+
+#include <fstream>
+#include <iostream>
+#include <vector>
+
+#define CONCAT(a, b) a##b
+#define MAKE_LABEL(a, b) CONCAT(a, b)
+#define EQUALITY_TEST(a) EqualityWithSizeofTest<a> MAKE_LABEL(b_, __LINE__);   \
+  EqualityWithSizeofTest<a *> MAKE_LABEL(c_, __LINE__);                        \
+  EqualityWithSizeofTest<a **> MAKE_LABEL(d_, __LINE__);
+
+using namespace dealii;
+
+template<typename T>
+struct EqualityWithSizeofTest
+{
+  EqualityWithSizeofTest()
+  {
+    T t = 0;
+    deallog << (sizeof(t) == dealii::MemoryConsumption::memory_consumption(t))
+            << std::endl;
+
+    std::vector<T> vector_test(42);
+    deallog << ((sizeof(std::vector<T>) + vector_test.capacity()*sizeof(T))
+                == dealii::MemoryConsumption::memory_consumption(vector_test))
+            << std::endl;
+  }
+};
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  // do not test value type (just pointers) with void
+  EqualityWithSizeofTest<void *> a;
+  EqualityWithSizeofTest<void **> b;
+
+  // std::vector<bool> is overloaded to work as a bit field, so the vector
+  // version should be unequal
+  EQUALITY_TEST(bool)
+  EQUALITY_TEST(signed char)
+  EQUALITY_TEST(unsigned char)
+  // char* is overloaded to measure the length of a C string, so the pointer
+  // version should be unequal
+  EQUALITY_TEST(char)
+  EQUALITY_TEST(wchar_t)
+
+  EQUALITY_TEST(short)
+  EQUALITY_TEST(short int)
+  EQUALITY_TEST(signed short)
+  EQUALITY_TEST(signed short int)
+  EQUALITY_TEST(unsigned short)
+  EQUALITY_TEST(unsigned short int)
+  EQUALITY_TEST(int)
+  EQUALITY_TEST(signed)
+  EQUALITY_TEST(signed int)
+  EQUALITY_TEST(unsigned)
+  EQUALITY_TEST(unsigned int)
+  EQUALITY_TEST(long)
+  EQUALITY_TEST(long int)
+  EQUALITY_TEST(signed long)
+  EQUALITY_TEST(signed long int)
+  EQUALITY_TEST(unsigned long int)
+
+  EQUALITY_TEST(float)
+  EQUALITY_TEST(double)
+  EQUALITY_TEST(long double)
+}
diff --git a/tests/base/memory_consumption_02.output b/tests/base/memory_consumption_02.output
new file mode 100644 (file)
index 0000000..7bdb9e6
--- /dev/null
@@ -0,0 +1,149 @@
+
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::0
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::0
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1
+DEAL::1

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.