diff ext/kissfft/test/pstats.c @ 409:1f1999b0f577

Bring in kissfft into this repo (formerly a subrepo, but the remote is not responding)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Tue, 21 Jul 2015 07:34:15 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ext/kissfft/test/pstats.c	Tue Jul 21 07:34:15 2015 +0100
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/times.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "pstats.h"
+
+static struct tms tms_beg;
+static struct tms tms_end;
+static int has_times = 0;
+
+
+void pstats_init(void)
+{
+    has_times = times(&tms_beg) != -1;
+}
+
+static void tms_report(void)
+{
+    double cputime;
+    if (! has_times )
+        return;
+    times(&tms_end);
+    cputime = ( ((float)tms_end.tms_utime + tms_end.tms_stime + tms_end.tms_cutime + tms_end.tms_cstime ) -
+                ((float)tms_beg.tms_utime + tms_beg.tms_stime + tms_beg.tms_cutime + tms_beg.tms_cstime ) )
+               / sysconf(_SC_CLK_TCK);
+    fprintf(stderr,"\tcputime=%.3f\n" , cputime);
+}
+
+static void ps_report(void)
+{
+    char buf[1024];
+#ifdef __APPLE__ /*  MAC OS X */
+    sprintf(buf,"ps -o command,majflt,minflt,rss,pagein,vsz -p %d 1>&2",getpid() );
+#else /* GNU/Linux */
+    sprintf(buf,"ps -o comm,majflt,minflt,rss,drs,pagein,sz,trs,vsz %d 1>&2",getpid() );
+#endif    
+    if (system( buf )==-1) {
+        perror("system call to ps failed");
+    }
+}
+
+void pstats_report()
+{
+    ps_report();
+    tms_report();
+}
+