refactor: move 'gettime_i64()' to tests_common.h
Relocate the clock time getter to tests_common.h to make it easily reusable across test programs. This will be useful for the upcoming unit test framework. Context - why not placing it inside testutil.h?: The bench program links against the production-compiled library, not its own compiled version. Therefore, `gettime_i64()` cannot be moved to testutil.h, because testutil.h calls `secp256k1_pubkey_save()`, which exists only in the internal secp256k1.c and not in the public API.
This commit is contained in:
@@ -45,6 +45,7 @@ noinst_HEADERS += src/precomputed_ecmult.h
|
|||||||
noinst_HEADERS += src/precomputed_ecmult_gen.h
|
noinst_HEADERS += src/precomputed_ecmult_gen.h
|
||||||
noinst_HEADERS += src/assumptions.h
|
noinst_HEADERS += src/assumptions.h
|
||||||
noinst_HEADERS += src/checkmem.h
|
noinst_HEADERS += src/checkmem.h
|
||||||
|
noinst_HEADERS += src/tests_common.h
|
||||||
noinst_HEADERS += src/testutil.h
|
noinst_HEADERS += src/testutil.h
|
||||||
noinst_HEADERS += src/util.h
|
noinst_HEADERS += src/util.h
|
||||||
noinst_HEADERS += src/util_local_visibility.h
|
noinst_HEADERS += src/util_local_visibility.h
|
||||||
|
|||||||
22
src/bench.h
22
src/bench.h
@@ -12,27 +12,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#if (defined(_MSC_VER) && _MSC_VER >= 1900)
|
#include "tests_common.h"
|
||||||
# include <time.h>
|
|
||||||
#else
|
|
||||||
# include <sys/time.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int64_t gettime_i64(void) {
|
|
||||||
#if (defined(_MSC_VER) && _MSC_VER >= 1900)
|
|
||||||
/* C11 way to get wallclock time */
|
|
||||||
struct timespec tv;
|
|
||||||
if (!timespec_get(&tv, TIME_UTC)) {
|
|
||||||
fputs("timespec_get failed!", stderr);
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
return (int64_t)tv.tv_nsec / 1000 + (int64_t)tv.tv_sec * 1000000LL;
|
|
||||||
#else
|
|
||||||
struct timeval tv;
|
|
||||||
gettimeofday(&tv, NULL);
|
|
||||||
return (int64_t)tv.tv_usec + (int64_t)tv.tv_sec * 1000000LL;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FP_EXP (6)
|
#define FP_EXP (6)
|
||||||
#define FP_MULT (1000000LL)
|
#define FP_MULT (1000000LL)
|
||||||
|
|||||||
42
src/tests_common.h
Normal file
42
src/tests_common.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Distributed under the MIT software license, see the accompanying *
|
||||||
|
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
#ifndef SECP256K1_TESTS_COMMON_H
|
||||||
|
#define SECP256K1_TESTS_COMMON_H
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* Test Support Utilities
|
||||||
|
*
|
||||||
|
* This file provides general-purpose functions for tests and benchmark
|
||||||
|
* programs. Unlike testutil.h, this file is not linked to the library,
|
||||||
|
* allowing each program to choose whether to run against the production
|
||||||
|
* API or access library internals directly.
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#if (defined(_MSC_VER) && _MSC_VER >= 1900)
|
||||||
|
# include <time.h>
|
||||||
|
#else
|
||||||
|
# include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int64_t gettime_i64(void) {
|
||||||
|
#if (defined(_MSC_VER) && _MSC_VER >= 1900)
|
||||||
|
/* C11 way to get wallclock time */
|
||||||
|
struct timespec tv;
|
||||||
|
if (!timespec_get(&tv, TIME_UTC)) {
|
||||||
|
fputs("timespec_get failed!", stderr);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
return (int64_t)tv.tv_nsec / 1000 + (int64_t)tv.tv_sec * 1000000LL;
|
||||||
|
#else
|
||||||
|
struct timeval tv;
|
||||||
|
gettimeofday(&tv, NULL);
|
||||||
|
return (int64_t)tv.tv_usec + (int64_t)tv.tv_sec * 1000000LL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* SECP256K1_TESTS_COMMON_H */
|
||||||
Reference in New Issue
Block a user