30 #include <gsl/gsl_rng.h>
31 #include <gsl/gsl_randist.h>
33 #include <lal/LALStdlib.h>
34 #include <lal/LALMalloc.h>
35 #include <lal/LogPrintf.h>
39 setvbuf(stdout, NULL, _IONBF, 0);
43 const int n = 1 << 17;
44 printf(
"LALMallocPerf: Testing performance with %i allocates\n", n);
48 for (
int i = 0; i < n; ++i) {
51 printf(
"LALMallocPerf: Deallocate in same order as allocate:\t");
53 for (
int i = 0; i < n; ++i) {
57 printf(
"%g sec (%e sec/deallocate)\n", t, t/n);
62 for (
int i = 0; i < n; ++i) {
65 printf(
"LALMallocPerf: Deallocate in reverse order as allocate:\t");
67 for (
int i = n - 1; i >= 0; --i) {
71 printf(
"%g sec (%e sec/deallocate)\n", t, t/n);
77 for (
int i = 0; i < n; ++i) {
82 gsl_rng *
r = gsl_rng_alloc(gsl_rng_default);
83 gsl_ran_shuffle(
r, ii, n,
sizeof(
int));
85 printf(
"LALMallocPerf: Deallocate in random order:\t\t");
87 for (
int i = 0; i < n; ++i) {
91 printf(
"%g sec (%e sec/deallocate)\n", t, t/n);
void LALCheckMemoryLeaks(void)
int main(int argc, char *argv[])
double REAL8
Double precision real floating-point number (8 bytes).
@ LALMEMTRKBIT
enable memory tracking
REAL8 XLALGetCPUTime(void)
High-resolution CPU timer (returns result in seconds), aimed for code-timing purposes.