Пример #1
0
double averageWorstPercentileMsecs(double p)
{
  tick_t acc = 0;
  int numSamples = (int)(totalRuns*p);
  for(int i = 0; i < numSamples; ++i)
    acc += allTicks[totalRuns-1-i];
  return acc * 1000.0 / numSamples / ticks_per_sec(); 
}
Пример #2
0
void __attribute__((noinline)) main_loop()
{
  tick_t t0 = tick();
  for(int i = 0; i < 500000; ++i)
  {
#if BENCHMARK_FUNCTION_POINTER
    counter += pointerToFunction(i, i+1, i+2);
#else
    counter += foreignFunctionThatTakesThreeParameters(i, i+1, i+2);
#endif
  }
  tick_t t1 = tick();
  allTicks[numRunsDone] = t1 - t0;
  ++numRunsDone;
  accumulatedTicks += t1 - t0;
  printf("Run %d: %f msecs.\n", numRunsDone, (t1 - t0) * 1000.0 / ticks_per_sec());
  if (numRunsDone >= totalRuns)
  {
    double accumulatedTimeMsecs = accumulatedTicks * 1000.0 / ticks_per_sec();
    std::sort(allTicks, allTicks + totalRuns);
    printf("Total: %d runs, avg. %f msecs per run. Counter: %d.\n", totalRuns, accumulatedTimeMsecs / totalRuns, counter);
    printf("Best run: %f msecs.\n", allTicks[0] * 1000.0 / ticks_per_sec());
    printf("1%% Best percentile: %f msecs. 1%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.01), averageWorstPercentileMsecs(0.01));
    printf("5%% Best percentile: %f msecs. 5%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.05), averageWorstPercentileMsecs(0.05));
    printf("10%% Best percentile: %f msecs. 10%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.10), averageWorstPercentileMsecs(0.10));
    printf("25%% Best percentile: %f msecs. 25%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.25), averageWorstPercentileMsecs(0.25));
    printf("50%% Best percentile: %f msecs. 50%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.50), averageWorstPercentileMsecs(0.50));
    printf("75%% Best percentile: %f msecs. 75%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.75), averageWorstPercentileMsecs(0.75));
    printf("95%% Best percentile: %f msecs. 95%% Worst percentile: %f msecs.\n", averageBestPercentileMsecs(0.95), averageWorstPercentileMsecs(0.95));
    printf("100%% Best/Worst percentile (==average over all samples): %f msecs.\n", averageBestPercentileMsecs(1.00));

    printf("Median run: %f msecs.\n", allTicks[totalRuns/2] * 1000.0 / ticks_per_sec());
    printf("Total time: %f\n", accumulatedTimeMsecs);
#ifdef __EMSCRIPTEN__
    emscripten_cancel_main_loop();
#endif
    exit(0);
  }
}
Пример #3
0
/**
 * "time" command
 *
 * @v argc		Argument count
 * @v argv		Argument list
 * @ret rc		Return status code
 */
static int time_exec ( int argc, char **argv ) {
	struct time_options opts;
	unsigned long start;
	int secs;
	int rc;

	/* Parse options */
	if ( ( rc = parse_options ( argc, argv, &time_cmd, &opts ) ) != 0 )
		return rc;

	start = currticks();
	rc = execv ( argv[1], argv + 1 );
	secs = (currticks() - start) / ticks_per_sec();

	printf ( "%s: %ds\n", argv[0], secs );

	return rc;
}
Пример #4
0
  virtual void do_update_ui() {
    const unsigned c_width = 60;

    if (total == 0)
      percent_done = 0;
    else
      percent_done = al_round(static_cast<double>(completed) * 100 / total);
    if (percent_done > 100)
      percent_done = 100;

    unsigned __int64 speed;
    if (time_elapsed() == 0)
      speed = 0;
    else
      speed = al_round(static_cast<double>(completed) / time_elapsed() * ticks_per_sec());

    wostringstream st;
    st << setw(7) << format_data_size(completed, get_size_suffixes()) << L" / " << format_data_size(total, get_size_suffixes()) << L" @ " << setw(9) << format_data_size(speed, get_speed_suffixes()) << L'\n';
    st << Far::get_progress_bar_str(c_width, percent_done, 100) << L'\n';
    progress_text = st.str();
  }
Пример #5
0
/**
 * "time" command
 *
 * @v argc		Argument count
 * @v argv		Argument list
 * @ret rc		Return status code
 */
static int time_exec ( int argc, char **argv ) {
	struct time_options opts;
	unsigned long start;
	unsigned long elapsed;
	int decisecs;
	int rc;

	/* Parse options */
	if ( ( rc = parse_options ( argc, argv, &time_cmd, &opts ) ) != 0 )
		return rc;

	start = currticks();
	rc = execv ( argv[1], argv + 1 );
	elapsed = ( currticks() - start );
	decisecs = ( 10 * elapsed / ticks_per_sec() );

	printf ( "%s: %d.%ds\n", argv[0],
		 ( decisecs / 10 ), ( decisecs % 10 ) );

	return rc;
}
Пример #6
0
  virtual void do_update_ui() {
    const unsigned c_width = 60;

    percent_done = calc_percent(completed, total);

    unsigned __int64 time = time_elapsed();
    unsigned __int64 speed;
    if (time == 0)
      speed = 0;
    else
      speed = al_round(static_cast<double>(completed) / time * ticks_per_sec());

    unsigned __int64 total_time;
    if (completed)
      total_time = static_cast<unsigned __int64>(static_cast<double>(total) / completed * time);
    else
      total_time = 0;
    if (total_time < time)
      total_time = time;

    wostringstream st;
    st << fit_str(arc_path, c_width) << L'\n';
    st << L"\x1\n";
    st << fit_str(file_path, c_width) << L'\n';
    st << setw(7) << format_data_size(file_completed, get_size_suffixes()) << L" / " <<
      format_data_size(file_total, get_size_suffixes()) << L'\n';
    st << Far::get_progress_bar_str(c_width, calc_percent(file_completed, file_total), 100) << L'\n';
    st << L"\x1\n";
    st << setw(7) << format_data_size(completed, get_size_suffixes()) << L" / " <<
      format_data_size(total, get_size_suffixes()) << L" @ " << setw(9) <<
      format_data_size(speed, get_speed_suffixes()) << L" -" << format_time((total_time - time) / ticks_per_sec()) << L'\n';
    st << setw(7) << format_data_size(total_data_read, get_size_suffixes()) << L" \x2192 " <<
      setw(7) << format_data_size(total_data_written, get_size_suffixes()) << L" = " <<
      setw(2) << calc_percent(total_data_written, total_data_read) << L"%" << L'\n';
    st << Far::get_progress_bar_str(c_width, percent_done, 100) << L'\n';
    progress_text = st.str();
  }
Пример #7
0
  virtual void do_update_ui() {
    const unsigned c_width = 60;

    percent_done = calc_percent(extract_completed, extract_total);

    unsigned __int64 extract_speed;
    if (time_elapsed() == 0)
      extract_speed = 0;
    else
      extract_speed = al_round(static_cast<double>(extract_completed) / time_elapsed() * ticks_per_sec());

    if (extract_total && cache_total > extract_total)
      cache_total = extract_total;

    unsigned cache_stored_percent = calc_percent(cache_stored, cache_total);
    unsigned cache_written_percent = calc_percent(cache_written, cache_total);

    wostringstream st;
    st << fit_str(arc_path, c_width) << L'\n';
    st << L"\x1\n";
    st << fit_str(extract_file_path, c_width) << L'\n';
    st << setw(7) << format_data_size(extract_completed, get_size_suffixes()) << L" / " << format_data_size(extract_total, get_size_suffixes()) << L" @ " << setw(9) << format_data_size(extract_speed, get_speed_suffixes()) << L'\n';
    st << Far::get_progress_bar_str(c_width, percent_done, 100) << L'\n';
    st << L"\x1\n";
    st << fit_str(cache_file_path, c_width) << L'\n';
    st << L"(" << format_data_size(cache_stored, get_size_suffixes()) << L" - " << format_data_size(cache_written, get_size_suffixes()) << L") / " << format_data_size(cache_total, get_size_suffixes()) << L'\n';
    st << get_progress_bar_str(c_width, cache_written_percent, cache_stored_percent) << L'\n';
    progress_text = st.str();
  }