Beispiel #1
0
static void benchmark_compare(const char *a, const char *b) {
    int bma = find_benchmark(a);
    int bmb = find_benchmark(b);
    int data = bm.list[bmb]->allocated - bm.list[bma]->allocated;

    out(_("Clock: %d\n"), (int)(bm.list[bmb]->clock - bm.list[bma]->clock));
    out(_("Time: %lf\n"), difftime(bm.list[bmb]->time, bm.list[bma]->time));
    out(_("Memory: %i bytes"), data);
    print_memsize(data);
}
Beispiel #2
0
void bm_end(const char* name) { 
  benchmark_t* benchmark;
  struct rusage rs;

  int ret = getrusage(RUSAGE_SELF, &rs);  
  if (ret != 0) {
    perror("rusage failed");    
    exit(-1);
  }

  benchmark = find_benchmark(name);
  benchmark->end = rs;

  struct timeval utime;
  timeval_subtract(&utime, &benchmark->end.ru_utime, &benchmark->begin.ru_utime);
  struct timeval stime;
  timeval_subtract(&stime, &benchmark->end.ru_stime, &benchmark->begin.ru_stime);
  
  printf("Benchmark: %s\n", benchmark->name);
  printf("User time used  : %ld.%06ld\n",
         utime.tv_sec, (long int)utime.tv_usec);
  printf("System time used: %ld.%06ld\n",
         stime.tv_sec, (long int)stime.tv_usec);
  printf("\n");
}
Beispiel #3
0
/** Main entry point for benchmark code: parse the command line, and run
 * some benchmarks. */
int
main(int argc, const char **argv)
{
  int i;
  int list=0, n_enabled=0;
  benchmark_t *b;
  char *errmsg;
  or_options_t *options;

  tor_threads_init();

  for (i = 1; i < argc; ++i) {
    if (!strcmp(argv[i], "--list")) {
      list = 1;
    } else {
      benchmark_t *b = find_benchmark(argv[i]);
      ++n_enabled;
      if (b) {
        b->enabled = 1;
      } else {
        printf("No such benchmark as %s\n", argv[i]);
      }
    }
  }

  reset_perftime();

  if (crypto_seed_rng() < 0) {
    printf("Couldn't seed RNG; exiting.\n");
    return 1;
  }
  crypto_init_siphash_key();
  options = options_new();
  init_logging(1);
  options->command = CMD_RUN_UNITTESTS;
  options->DataDirectory = tor_strdup("");
  options_init(options);
  if (set_options(options, &errmsg) < 0) {
    printf("Failed to set initial options: %s\n", errmsg);
    tor_free(errmsg);
    return 1;
  }

  for (b = benchmarks; b->name; ++b) {
    if (b->enabled || n_enabled == 0) {
      printf("===== %s =====\n", b->name);
      if (!list)
        b->fn();
    }
  }

  return 0;
}
Beispiel #4
0
void bm_register(const char* name, void (*func)(int), int iters) {
  benchmark_t benchmark;
  int length = global_benchmarks_length();
  benchmark.name = name;
  benchmark.func = func;
  benchmark.iters = iters;
  assert(!find_benchmark(name));
  global_benchmarks = (benchmark_t *)realloc(
      global_benchmarks, (length + 2)*sizeof(benchmark_t));
  global_benchmarks[length] = benchmark;
  memset(&benchmark, 0, sizeof(benchmark_t));  // pivot
  global_benchmarks[length + 1] = benchmark;
}
Beispiel #5
0
void bm_start(const char* name) {
  benchmark_t* benchmark;
  struct rusage rs;

  benchmark = find_benchmark(name);
  assert(benchmark);
  int ret = getrusage(RUSAGE_SELF, &rs);  
  if (ret != 0) {
    perror("rusage failed");    
    exit(-1);
  }
  benchmark->begin = rs;
  (*benchmark->func)(benchmark->iters);
}
Beispiel #6
0
/** Main entry point for benchmark code: parse the command line, and run
 * some benchmarks. */
int
main(int argc, const char **argv)
{
  int i;
  int list=0, n_enabled=0;
  benchmark_t *b;

  tor_threads_init();

  for (i = 1; i < argc; ++i) {
    if (!strcmp(argv[i], "--list")) {
      list = 1;
    } else {
      benchmark_t *b = find_benchmark(argv[i]);
      ++n_enabled;
      if (b) {
        b->enabled = 1;
      } else {
        printf("No such benchmark as %s\n", argv[i]);
      }
    }
  }

  reset_perftime();

  crypto_seed_rng(1);

  for (b = benchmarks; b->name; ++b) {
    if (b->enabled || n_enabled == 0) {
      printf("===== %s =====\n", b->name);
      if (!list)
        b->fn();
    }
  }

  return 0;
}
Beispiel #7
0
static void benchmark_save(const char *name) {
    struct mallinfo info;
    int             i;

    i = find_benchmark(name);
    if (i == NOT_FOUND) {
        if (bm.count == MAX_BENCHMARKS) {
            error(_("Reached maximum of benchmarks\n"));
            return;
        }
        i = bm.count++;
        {
            struct benchmark_data    *nbm;

            nbm = TALLOC(struct benchmark_data);
            bm.list[i] = nbm;
            strcpy(bm.list[i]->name, name);
        }
    }
    info = mallinfo();
    bm.list[i]->clock = clock();
    bm.list[i]->allocated = info.uordblks;
    bm.list[i]->time = time(NULL);
}