wjh@inf.rl.ac.uk (Bill Hewitt) (06/01/90)
I am in some confusion over the correct awk script to use to get xstone
ratings from the xbench software. The original script that I got with the
software is listed below :-
------------------------------------------------------------------------------
BEGIN {
countedWeight["all"] = 0;
missedWeight["all"] = 0;
runtime["all"] = 0;
countedWeight["line"] = 0;
missedWeight["line"] = 0;
runtime["line"] = 0;
countedWeight["fill"] = 0;
missedWeight["fill"] = 0;
runtime["fill"] = 0;
countedWeight["blit"] = 0;
missedWeight["blit"] = 0;
runtime["blit"] = 0;
countedWeight["arc"] = 0;
missedWeight["arc"] = 0;
runtime["arc"] = 0;
countedWeight["text"] = 0;
missedWeight["text"] = 0;
runtime["text"] = 0;
countedWeight["complex"] = 0;
missedWeight["complex"] = 0;
runtime["complex"] = 0;
sunValue["line10"] = 3456.00;
sunValue["line100"] = 1745.45;
sunValue["line400"] = 704.00;
sunValue["dline10"] = 768.00;
sunValue["dline100"] = 170.67;
sunValue["dline400"] = 46.55;
sunValue["wline10"] = 79.45;
sunValue["wline100"] = 20.21;
sunValue["wline400"] = 6.00;
sunValue["rects10"] = 1722.18;
sunValue["rects100"] = 1070.55;
sunValue["rects400"] = 452.92;
sunValue["fillrects10"] = 3916.80;
sunValue["fillrects100"] = 1024.00;
sunValue["fillrects400"] = 176.00;
sunValue["tiledrects10"] = 2739.20;
sunValue["tiledrects100"] = 329.14;
sunValue["tiledrects400"] = 41.29;
sunValue["stippledrects10"] = 1186.91;
sunValue["stippledrects100"] = 153.60;
sunValue["stippledrects400"] = 35.56;
sunValue["invrects10"] = 3010.10;
sunValue["invrects100"] = 859.91;
sunValue["invrects400"] = 119.50;
sunValue["arcs10"] = 4.82;
sunValue["arcs100"] = 1.27;
sunValue["arcs400"] = 0.55;
sunValue["filledarcs10"] = 15.52;
sunValue["filledarcs100"] = 5.45;
sunValue["filledarcs400"] = 2.60;
sunValue["filledpoly100"] = 90.33;
sunValue["screencopy10"] = 158.50;
sunValue["screencopy100"] = 83.57;
sunValue["screencopy400"] = 17.76;
sunValue["scroll"] = 26.59;
sunValue["bitmapcopy10"] = 232.82;
sunValue["bitmapcopy100"] = 52.76;
sunValue["bitmapcopy400"] = 8.19;
sunValue["string"] = 5009.45;
sunValue["complex1"] = 15.30;
}
/ line10 / { x = "line10"; w = 300; g = "line"; }
/ line100 / { x = "line100"; w = 400; g = "line"; }
/ line400 / { x = "line400"; w = 300; g = "line"; }
/ dline10 / { x = "dline10"; w = 50; g = "line"; }
/ dline100 / { x = "dline100"; w = 150; g = "line"; }
/ dline400 / { x = "dline400"; w = 100; g = "line"; }
/ wline10 / { x = "wline10"; w = 50; g = "line"; }
/ wline100 / { x = "wline100"; w = 100; g = "line"; }
/ wline400 / { x = "wline400"; w = 50; g = "line"; }
/ rects10 / { x = "rects10"; w = 150; g = "line"; }
/ rects100 / { x = "rects100"; w = 250; g = "line"; }
/ rects400 / { x = "rects400"; w = 150; g = "line"; }
/ fillrects10 / { x = "fillrects10"; w = 350; g = "fill"; }
/ fillrects100 / { x = "fillrects100"; w = 450; g = "fill"; }
/ fillrects400 / { x = "fillrects400"; w = 350; g = "fill"; }
/ tiledrects10 / { x = "tiledrects10"; w = 150; g = "fill"; }
/ tiledrects100 / { x = "tiledrects100"; w = 250; g = "fill"; }
/ tiledrects400 / { x = "tiledrects400"; w = 150; g = "fill"; }
/ stippledrects10 / { x = "stippledrects10"; w = 50; g = "fill"; }
/ stippledrects100 / { x = "stippledrects100"; w = 100; g = "fill"; }
/ stippledrects400 / { x = "stippledrects400"; w = 50; g = "fill"; }
/ arcs10 / { x = "arcs10"; w = 50; g = "arc"; }
/ arcs100 / { x = "arcs100"; w = 100; g = "arc"; }
/ arcs400 / { x = "arcs400"; w = 50; g = "arc"; }
/ filledarcs10 / { x = "filledarcs10"; w = 50; g = "arc"; }
/ filledarcs100 / { x = "filledarcs100"; w = 100; g = "arc"; }
/ filledarcs400 / { x = "filledarcs400"; w = 50; g = "arc"; }
/ filledpoly100 / { x = "filledpoly100"; w = 200; g = "dummy"; }
/ invrects10 / { x = "invrects10"; w = 100; g = "blit"; }
/ invrects100 / { x = "invrects100"; w = 150; g = "blit"; }
/ invrects400 / { x = "invrects400"; w = 100; g = "blit"; }
/ screencopy10 / { x = "screencopy10"; w = 50; g = "blit"; }
/ screencopy100 / { x = "screencopy100"; w = 150; g = "blit"; }
/ screencopy400 / { x = "screencopy400"; w = 100; g = "blit"; }
/ scroll / { x = "scroll"; w =1000; g = "blit"; }
/ bitmapcopy10 / { x = "bitmapcopy10"; w = 50; g = "blit"; }
/ bitmapcopy100 / { x = "bitmapcopy100"; w = 100; g = "blit"; }
/ bitmapcopy400 / { x = "bitmapcopy400"; w = 50; g = "blit"; }
/ imagestring/ { x = "string"; w =3000; g = "text"; }
/ complex1 / { x = "complex1"; w = 800; g = "complex"; }
/rate =/ {
if ( x != "dummy" ) {
ratio = $3 / sunValue[x];
runtime["all"] = runtime["all"] + w/ratio;
countedWeight["all"] = countedWeight["all"] + w;
runtime[g] = runtime[g] + w/ratio;
countedWeight[g] = countedWeight[g] + w;
x = "dummy"; w = 1
}
}
/NOT RUN/ {
if (x != "dummy") {
missedWeight["all"] = missedWeight["all"] + w;
missedWeight[g] = missedWeight[g] + w;
x = "dummy"; w = 1
}
}
END {
cw = countedWeight["line"];
mw = missedWeight["line"];
rt = runtime["line"];
allWeight = 10000;
if (cw == 0) {
print "TOTAL ? lineStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f lineStones",text,stones); print t;
}
cw = countedWeight["fill"];
mw = missedWeight["fill"];
rt = runtime["fill"];
if (cw == 0) {
print "TOTAL ? fillStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f fillStones",text,stones); print t;
}
cw = countedWeight["blit"];
mw = missedWeight["blit"];
rt = runtime["blit"];
if (cw == 0) {
print "TOTAL ? blitStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f blitStones",text,stones); print t;
}
cw = countedWeight["arc"];
mw = missedWeight["arc"];
rt = runtime["arc"];
if (cw == 0) {
print "TOTAL ? arcStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f arcStones",text,stones);
print t;
}
cw = countedWeight["text"];
mw = missedWeight["text"];
rt = runtime["text"];
if (cw == 0) {
print "TOTAL ? textStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f textStones",text,stones); print t;
}
cw = countedWeight["complex"];
mw = missedWeight["complex"];
rt = runtime["complex"];
if (cw == 0) {
print "TOTAL ? complexStones"
} else {
rt = (rt*allWeight)/cw;
if (mw > 0) {
text = "expected ";
} else {
text = "";
}
ratio = allWeight/rt;
stones = int(allWeight * ratio);
t = sprintf("TOTAL %s %8.0f xStones",text,stones);
print t;
}
}
-------------------------------------------------------------------------------
Is this still correct or has it been superceded ?
--
Bill Hewitt, UUCP: ..!mcvax!ukc!rlinf!wjh
Science & Engineering Research Council, JANET: wjh@uk.ac.rl.inf
Rutherford Appleton Laboratory,
Chilton, Didcot,
Oxfordshire, OX11 0QX.
U.K. Tel: (0235) 44 5857
Someone get a message through to captain Snort.
He'd better start assembling the boys from the fort !
Keep Mrs Hunnyman right out of sight.
There's gonna be a riot down in Trumpton tonight !
- Half Man Half Biscuit -