blob: 8f4e1b703b0fc0ba1abc4b45c9206daa34aa237c [file] [log] [blame] [edit]
#include <algorithm>
#include <string>
#include <sstream>
#include <cmath>
#include "vtr_log.h"
#include "histogram.h"
void print_histogram(std::vector<HistogramBucket> histogram) {
size_t char_width = 80;
//Determine the maximum count
size_t max_count = 0.;
for(HistogramBucket bucket : histogram) {
max_count = std::max(max_count, bucket.count);
}
if(max_count == 0) return; //Nothing to do
int count_digits = ceil(log10(max_count));
//Determine the maximum prefix length
size_t bar_len = char_width
- (18 +3) //bucket prefix
- count_digits
- 2; //-2 for " |" appended after count
for(size_t ibucket = 0; ibucket < histogram.size(); ++ibucket) {
vtr::printf("[% 9.2g:% 9.2g) %*zu |", histogram[ibucket].min_value, histogram[ibucket].max_value, count_digits, histogram[ibucket].count);
size_t num_chars = std::round((double(histogram[ibucket].count) / max_count) * bar_len);
for(size_t i = 0; i < num_chars; ++i) {
vtr::printf("*");
}
vtr::printf("\n");
}
}