T: add some hack programs
- time_meas to measure time spent in scheduling - timeplot to show nice histograms in realtim of above measurement
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
void RESET(void)
|
||||
{ printf("\x1b""c"); fflush(stdout); }
|
||||
|
||||
void GOTO(int x, int y)
|
||||
{ char s[64];sprintf(s,"\x1b[%d;%dH",y,x);printf("%s",s);fflush(stdout); }
|
||||
|
||||
void HIDE_CURSOR(void)
|
||||
{ printf("\x1b[?25l"); fflush(stdout); }
|
||||
|
||||
void sig(int x)
|
||||
{
|
||||
RESET();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* 0: [0-2[
|
||||
* ...
|
||||
* 48: [96-98[
|
||||
* 49: [98-infinity]
|
||||
*/
|
||||
int bins[50];
|
||||
|
||||
#define N 1000
|
||||
int data[N];
|
||||
|
||||
void plot(void)
|
||||
{
|
||||
int i;
|
||||
int max = 0;
|
||||
int vmin = data[0];
|
||||
int vmax = 0;
|
||||
long vavg;
|
||||
memset(bins, 0, sizeof(bins));
|
||||
int binsize_ns = 500;
|
||||
|
||||
vavg = 0;
|
||||
|
||||
for (i = 0; i < N; i++) {
|
||||
if (data[i] < vmin) vmin = data[i];
|
||||
if (data[i] > vmax) vmax = data[i];
|
||||
vavg += data[i];
|
||||
int ms2 = data[i]/binsize_ns;
|
||||
if (ms2 > 49) ms2 = 49;
|
||||
bins[ms2]++;
|
||||
if (bins[ms2] > max) max = bins[ms2];
|
||||
}
|
||||
|
||||
vavg /= N;
|
||||
|
||||
GOTO(1,1);
|
||||
for (i = 0; i < 50; i++) {
|
||||
double binend = (i+1) * binsize_ns / 1000.;
|
||||
int k;
|
||||
int width = bins[i] * 70 / max;
|
||||
/* force at least width of 1 if some point is there */
|
||||
if (bins[i] && width == 0) width = 1;
|
||||
printf("%#5.1f ", binend);
|
||||
for (k = 0; k < width; k++) putchar('#');
|
||||
for (; k < 70; k++) putchar(' ');
|
||||
putchar('\n');
|
||||
}
|
||||
printf("min %d ns max %d ns avg %ld ns\n", vmin, vmax, vavg);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i;
|
||||
int pos = 0;
|
||||
signal(SIGINT, sig);
|
||||
RESET();
|
||||
HIDE_CURSOR();
|
||||
while (!feof(stdin)) {
|
||||
for (i=0; i<100; i++) { scanf("%d", &data[pos]); pos++; pos%=N; }
|
||||
plot();
|
||||
}
|
||||
RESET();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user