[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master dd39acd: [ftbench] Use POSIX timers when availa
From: |
Alexei Podtelezhnikov |
Subject: |
[freetype2-demos] master dd39acd: [ftbench] Use POSIX timers when available. |
Date: |
Tue, 2 Aug 2016 03:17:17 +0000 (UTC) |
branch: master
commit dd39acd0dc9a879ca72da2d23c971837606011f2
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>
[ftbench] Use POSIX timers when available.
* src/ftbench.c (get_time): Use `clock_gettime' instead of obsolete
and less accurate `gettimeofday'.
(benchmark): Updated.
---
ChangeLog | 8 ++++++++
src/ftbench.c | 28 +++++++++++++++++-----------
2 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 06eab48..e40919c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-08-01 Alexei Podtelezhnikov <address@hidden>
+
+ [ftbench] Use POSIX timers when available.
+
+ * src/ftbench.c (get_time): Use `clock_gettime' instead of obsolete
+ and less accurate `gettimeofday'.
+ (benchmark): Updated.
+
2016-07-14 Werner Lemberg <address@hidden>
[ftgrid] New option `-d' to give start-up design coordinates.
diff --git a/src/ftbench.c b/src/ftbench.c
index ecc88b1..41df152 100644
--- a/src/ftbench.c
+++ b/src/ftbench.c
@@ -30,8 +30,8 @@
#include FT_CFF_DRIVER_H
#include FT_TRUETYPE_DRIVER_H
-#ifdef UNIX
-#include <sys/time.h>
+#ifdef __unix__
+#include <unistd.h>
#endif
#include "common.h"
@@ -159,21 +159,27 @@
/*
- * timer
+ * timer in milliseconds
*/
static double
get_time( void )
{
-#ifdef UNIX
- struct timeval tv;
+#if _POSIX_CPUTIME > 0
+ struct timespec tv;
- gettimeofday( &tv, NULL );
- return (double)tv.tv_sec + (double)tv.tv_usec / 1E6;
+ clock_gettime( CLOCK_PROCESS_CPUTIME_ID, &tv );
+ return 1E6 * (double)tv.tv_sec + 1E-3 * (double)tv.tv_nsec;
+#elif _POSIX_TIMERS > 0
+ struct timespec tv;
+
+
+ clock_gettime( CLOCK_REALTIME, &tv );
+ return 1E6 * (double)tv.tv_sec + 1E-3 * (double)tv.tv_nsec;
#else
- /* clock() has an awful precision (~10ms) under Linux 2.4 + glibc 2.2 */
- return (double)clock() / (double)CLOCKS_PER_SEC;
+ /* clock() accuracy has improved since glibc 2.18 */
+ return 1E6 * (double)clock() / (double)CLOCKS_PER_SEC;
#endif
}
@@ -225,12 +231,12 @@
TIMER_STOP( &elapsed );
- if ( TIMER_GET( &elapsed ) > max_time )
+ if ( TIMER_GET( &elapsed ) > 1E6 * max_time )
break;
}
if ( done )
- printf( "%5.3f us/op\n", TIMER_GET( &timer ) * 1E6 / (double)done );
+ printf( "%5.3f us/op\n", TIMER_GET( &timer ) / (double)done );
else
printf( "no error-free calls\n" );
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master dd39acd: [ftbench] Use POSIX timers when available.,
Alexei Podtelezhnikov <=