class TJBench {
- static int flags = 0, quiet = 0, pf = TJ.PF_BGR, yuvpad = 1, warmup = 1;
+ static int flags = 0, quiet = 0, pf = TJ.PF_BGR, yuvpad = 1;
static boolean compOnly, decompOnly, doTile, doYUV, write = true;
static final String[] pixFormatStr = {
static TJScalingFactor sf;
static int xformOp = TJTransform.OP_NONE, xformOpt = 0;
- static double benchTime = 5.0;
+ static double benchTime = 5.0, warmup = 1.0;
static final double getTime() {
}
/* Benchmark */
- iter -= warmup;
+ iter = -1;
elapsed = elapsedDecode = 0.0;
while (true) {
int tile = 0;
tjd.decompress(dstBuf, x, y, width, pitch, height, pf, flags);
}
}
- iter++;
- if (iter >= 1) {
- elapsed += getTime() - start;
+ elapsed += getTime() - start;
+ if (iter >= 0) {
+ iter++;
if (elapsed >= benchTime)
break;
+ } else if (elapsed >= warmup) {
+ iter = 0;
+ elapsed = elapsedDecode = 0.0;
}
}
if(doYUV)
}
/* Benchmark */
- iter = -warmup;
+ iter = -1;
elapsed = elapsedEncode = 0.0;
while (true) {
int tile = 0;
totalJpegSize += jpegSize[tile];
}
}
- iter++;
- if (iter >= 1) {
- elapsed += getTime() - start;
+ elapsed += getTime() - start;
+ if (iter >= 0) {
+ iter++;
if (elapsed >= benchTime)
break;
+ } else if (elapsed >= warmup) {
+ iter = 0;
+ elapsed = elapsedEncode = 0.0;
}
}
if (doYUV)
}
}
- iter = -warmup;
+ iter = -1;
elapsed = 0.;
while (true) {
start = getTime();
tjt.transform(jpegBuf, t, flags);
jpegSize = tjt.getTransformedSizes();
- iter++;
- if (iter >= 1) {
- elapsed += getTime() - start;
+ elapsed += getTime() - start;
+ if (iter >= 0) {
+ iter++;
if (elapsed >= benchTime)
break;
+ } else if (elapsed >= warmup) {
+ iter = 0;
+ elapsed = 0.0;
}
}
t = null;
System.out.println("-grayscale = Perform lossless grayscale conversion prior to decompression");
System.out.println(" test (can be combined with the other transforms above)");
System.out.println("-benchtime <t> = Run each benchmark for at least <t> seconds (default = 5.0)");
- System.out.println("-warmup <w> = Execute each benchmark <w> times to prime the cache before");
- System.out.println(" taking performance measurements (default = 1)");
+ System.out.println("-warmup <t> = Run each benchmark for <t> seconds (default = 1.0) prior to");
+ System.out.println(" starting the timer, in order to prime the caches and thus improve the");
+ System.out.println(" consistency of the results.");
System.out.println("-componly = Stop after running compression tests. Do not test decompression.");
System.out.println("-nowrite = Do not write reference or output images (improves consistency");
System.out.println(" of performance measurements.)\n");
#define _throwbmp(m) _throw(m, bmpgeterr())
int flags=TJFLAG_NOREALLOC, componly=0, decomponly=0, doyuv=0, quiet=0,
- dotile=0, pf=TJPF_BGR, yuvpad=1, warmup=1, dowrite=1;
+ dotile=0, pf=TJPF_BGR, yuvpad=1, dowrite=1;
char *ext="ppm";
const char *pixFormatStr[TJ_NUMPF]=
{
tjscalingfactor *scalingfactors=NULL, sf={1, 1}; int nsf=0;
int xformop=TJXOP_NONE, xformopt=0;
int (*customFilter)(short *, tjregion, tjregion, int, int, tjtransform *);
-double benchtime=5.0;
+double benchtime=5.0, warmup=1.0;
char *formatName(int subsamp, int cs, char *buf)
}
/* Benchmark */
- iter=-warmup;
+ iter=-1;
elapsed=elapsedDecode=0.;
while(1)
{
_throwtj("executing tjDecompress2()");
}
}
- iter++;
- if(iter>=1)
+ elapsed+=gettime()-start;
+ if(iter>=0)
{
- elapsed+=gettime()-start;
+ iter++;
if(elapsed>=benchtime) break;
}
+ else if(elapsed>=warmup)
+ {
+ iter=0;
+ elapsed=elapsedDecode=0.;
+ }
}
if(doyuv) elapsed-=elapsedDecode;
}
/* Benchmark */
- iter=-warmup;
+ iter=-1;
elapsed=elapsedEncode=0.;
while(1)
{
totaljpegsize+=jpegsize[tile];
}
}
- iter++;
- if(iter>=1)
+ elapsed+=gettime()-start;
+ if(iter>=0)
{
- elapsed+=gettime()-start;
+ iter++;
if(elapsed>=benchtime) break;
}
+ else if(elapsed>=warmup)
+ {
+ iter=0;
+ elapsed=elapsedEncode=0.;
+ }
}
if(doyuv) elapsed-=elapsedEncode;
}
}
- iter=-warmup;
+ iter=-1;
elapsed=0.;
while(1)
{
if(tjTransform(handle, srcbuf, srcsize, _ntilesw*_ntilesh, jpegbuf,
jpegsize, t, flags)==-1)
_throwtj("executing tjTransform()");
- iter++;
- if(iter>=1)
+ elapsed+=gettime()-start;
+ if(iter>=0)
{
- elapsed+=gettime()-start;
+ iter++;
if(elapsed>=benchtime) break;
}
+ else if(elapsed>=warmup)
+ {
+ iter=0;
+ elapsed=0.;
+ }
}
free(t); t=NULL;
printf("-grayscale = Perform lossless grayscale conversion prior to decompression\n");
printf(" test (can be combined with the other transforms above)\n");
printf("-benchtime <t> = Run each benchmark for at least <t> seconds (default = 5.0)\n");
- printf("-warmup <w> = Execute each benchmark <w> times to prime the cache before\n");
- printf(" taking performance measurements (default = 1)\n");
+ printf("-warmup <t> = Run each benchmark for <t> seconds (default = 1.0) prior to\n");
+ printf(" starting the timer, in order to prime the caches and thus improve the\n");
+ printf(" consistency of the results.\n");
printf("-componly = Stop after running compression tests. Do not test decompression.\n");
printf("-nowrite = Do not write reference or output images (improves consistency of\n");
printf(" performance measurements.)\n\n");
}
if(!strcasecmp(argv[i], "-warmup") && i<argc-1)
{
- int temp=atoi(argv[++i]);
- if(temp>=0)
- {
- warmup=temp;
- printf("Warmup runs = %d\n\n", warmup);
- }
+ double temp=atof(argv[++i]);
+ if(temp>=0.0) warmup=temp;
else usage(argv[0]);
+ printf("Warmup time = %.1f seconds\n\n", warmup);
}
if(!strcmp(argv[i], "-?")) usage(argv[0]);
if(!strcasecmp(argv[i], "-alloc")) flags&=(~TJFLAG_NOREALLOC);