build: remove generated artifacts and unsafe scripts
This commit is contained in:
58
bench/main.c
58
bench/main.c
@@ -1,4 +1,7 @@
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <errno.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -13,7 +16,7 @@ struct Key {
|
||||
};
|
||||
|
||||
static Key *keys;
|
||||
static int nkeys;
|
||||
static size_t nkeys;
|
||||
static int fd;
|
||||
|
||||
static void
|
||||
@@ -26,13 +29,19 @@ die(char *msg)
|
||||
static void
|
||||
addkey(int k, int mod)
|
||||
{
|
||||
static int cap;
|
||||
static size_t cap;
|
||||
Key *p;
|
||||
|
||||
if(nkeys >= cap){
|
||||
if(cap > SIZE_MAX / 2 / sizeof(Key)){
|
||||
fprintf(stderr, "too many keys\n");
|
||||
exit(1);
|
||||
}
|
||||
cap = cap ? cap * 2 : 256;
|
||||
keys = realloc(keys, cap * sizeof(Key));
|
||||
if(!keys)
|
||||
p = realloc(keys, cap * sizeof(Key));
|
||||
if(!p)
|
||||
die("realloc");
|
||||
keys = p;
|
||||
}
|
||||
keys[nkeys].k = k;
|
||||
keys[nkeys].mod = mod;
|
||||
@@ -74,6 +83,28 @@ loadkeys(char *file)
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
if(nkeys == 0){
|
||||
fprintf(stderr, "%s: no keys\n", file);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
iterations(char *s)
|
||||
{
|
||||
uintmax_t n;
|
||||
char *end;
|
||||
|
||||
if(*s == '\0' || *s == '-')
|
||||
goto Bad;
|
||||
errno = 0;
|
||||
n = strtoumax(s, &end, 10);
|
||||
if(errno != 0 || *end != '\0' || n == 0 || n > UINT64_MAX)
|
||||
goto Bad;
|
||||
return n;
|
||||
Bad:
|
||||
fprintf(stderr, "invalid iteration count: %s\n", s);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -115,31 +146,38 @@ now(void)
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, j, niter;
|
||||
size_t j;
|
||||
uint64_t i, niter, total;
|
||||
double t0, t1, dt;
|
||||
|
||||
if(argc < 2){
|
||||
if(argc != 2 && argc != 3){
|
||||
fprintf(stderr, "usage: bench file [niter]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
loadkeys(argv[1]);
|
||||
niter = argc > 2 ? atoi(argv[2]) : 1000;
|
||||
niter = argc == 3 ? iterations(argv[2]) : 1000;
|
||||
if(nkeys > UINT64_MAX || niter > UINT64_MAX / nkeys){
|
||||
fprintf(stderr, "iteration count overflows key total\n");
|
||||
exit(1);
|
||||
}
|
||||
total = niter * nkeys;
|
||||
dial();
|
||||
t0 = now();
|
||||
for(i = 0; i < niter; i++)
|
||||
for(j = 0; j < nkeys; j++){
|
||||
sendkey(keys[j].k, keys[j].mod);
|
||||
if(readresp() < 0){
|
||||
fprintf(stderr, "failed at iter %d key %d\n", i, j);
|
||||
fprintf(stderr, "failed at iter %" PRIu64 " key %zu\n", i, j);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
t1 = now();
|
||||
dt = t1 - t0;
|
||||
printf("%d iters x %d keys = %d keys\n", niter, nkeys, niter * nkeys);
|
||||
printf("%" PRIu64 " iters x %zu keys = %" PRIu64 " keys\n",
|
||||
niter, nkeys, total);
|
||||
printf("%.3f ms total, %.3f us/key, %.3f us/iter\n",
|
||||
dt * 1000, dt * 1e6 / (niter * nkeys), dt * 1e6 / niter);
|
||||
dt * 1000, dt * 1e6 / total, dt * 1e6 / niter);
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user