benchmrk.sml
Applidat: .SML file includes both script
and data
See other
examples of APPLIDATs ...
# If the script is in an RVC file, assume all the data
# is in that file. If it's not, assume I'm still working
# on it and get the data from my data directory
string outputfile$ = _context.Filename;
#
# Create global variable because sometimes passing and returning variables isn't easy.
#
#-----------------------------------------------------
string formatedtime$="", tboxdata$="", flaname$="";
formatedtime$="";
tboxdata$="";
flaname$="";
numeric tprimes,tpis,ticfuzzyc,thdwrite,thdread,thdreadr,tdraw,tbuttons,timages,tvector;
numeric wroteHd = false;
class XmDrawingArea da;
class XmLabel ta;
class XmForm form; # The main form dialog
class GRE_VIEW view;
class ColorMap cmap;
class COLOR black, white;
class XmLabel ta, sa;
class ToggleButtonItem buttonAll;
class ToggleButtonItem buttonPrime;
class ToggleButtonItem buttonPi;
class ToggleButtonItem buttonIclass;
class ToggleButtonItem buttonHDW;
class ToggleButtonItem buttonHDR;
class ToggleButtonItem buttonHDRR;
class ToggleButtonItem buttonDraw;
class ToggleButtonItem buttonButtons;
class ToggleButtonItem buttonDimagess;
class ToggleButtonItem buttonDvector;
class XmForm formme, button_row22;
class XmFrame bframe, tframe, frame;
class XmRowColumn buttonrow1, button_row11;
class XmFrame button_row2, button_row1;
class XmPushButton trashvar;
class DISP handle, handle2;
class DISPLAYINFO disp_info;
class PushButtonItem buttonSave, buttonExit;
class FILE f;
vector V, Vvar;
raster Rvar, R1, R2;
numeric oldheight, oldwidth, n, number, out, factor;
numeric prime, total, x, y, lin, col, usePoints, useLines, searchDist, weightPower;
numeric minutes, seconds, ttotal, tperfect, tsfinversed, numext, count, count2;
string type$, searchMethod$, selectPoints$, selectLines$, valuePoints$, valueLines$;
string rasterdir$, rastername$, str$, delimit$, token$;
string fname$, a$, b$, c$, d$, datafile$;
#
# A function that creates a new label over the old forcing it to update
#
#-----------------------------------------------------
proc forceprint(class XmLabel taold, pstring$) {
oldheight=taold.Height;
oldwidth=taold.Width;
taold = CreateLabel(taold.parent,pstring$);
taold.Height=oldheight;
taold.Width=oldwidth;
taold.RecomputeSize=0;
}
func primes(nthprime){
class TIMER timeep;
timeep.Running = 1; # start timer
n=2;
number=3;
while (n0){
formatedtime$=sprintf("%d minutes %d seconds\n",minutes,seconds);
}
else{
formatedtime$=sprintf("%d seconds\n",seconds);
}
}
proc savetext(){
fname$ = GetOutputFileName("c:/tnt/win32/njh.txt", "Select a file to save results to", "txt");
ttotal=tprimes+tperfect+tpis+tsfinversed+ticfuzzyc+thdwrite+thdread+thdreadr+tdraw+tbuttons+timages+tvector;
a$=PopupString("Enter machine name.", "Lincoln");
b$=PopupString("Enter proccessor type and speed.", "Pentium 150");
c$=PopupString("Enter operating system version.", "Windows 98");
d$=PopupString("Enter TNT version.", "TNTlite 6.1");
numext=0;
if(_context.IsMacintosh)
if(PopupYesNo("Did you turn off all extensions",0)==0)
numext=PopupNum("How many extensions were you running",10);
disp_info=_context.DisplayInfo;
f=fopen(fname$, "a+"); # append or create a file
fprint(f, "\n--------------------------");
fprint(f, "Proccessor Type:",b$);
fprint(f, "Operating system:",c$);
fprint(f, "TNT version:",d$);
fprint(f, "Screen Resolution:",disp_info.Width,"x",disp_info.Height);
fprint(f, "Color Depth:",disp_info.BitsPerPixel,"bit");
fprint(f, "Running Extensions:",numext);
fprint(f, "Date",Date());
fprint(f, "--",a$,"--");
fprint(f, "Benchmark version 1.0");
fprint(f, "Total time:",ttotal);
fprint(f, "Primes:",tprimes);
fprint(f, "Pi:",tpis);
fprint(f, "Image classify:",ticfuzzyc);
fprint(f, "HD write:",thdwrite);
fprint(f, "HD read:",thdread);
#fprint(f, "HD read random:",thdreadr);
fprint(f, "Screen draw:",tdraw);
fprint(f, "Draw buttons:",tbuttons);
fprint(f, "Display image:",timages);
fprint(f, "Display vector:",tvector);
fclose(f); # close it
}
proc cbQuit() {
print("closing");
if(wroteHd) DeleteFile(flaname$);
DialogClose(form);
Exit();
}
#
# This is where we actually do all the drawing
#
#-----------------------------------------------------
func godraw(class XmDrawingArea da) {
class TIMER timeep;
timeep.Running = 1;
SetColorRGB(0,0,0);
FillRect(0, 0, da.width, da.height);
for count = 1 to da.width{
SetColorRGB(count%255, (count/4)%255, (count*8)%255);
DrawCircle(count, 10, 30);
DrawCircle(count, 60, 30);
DrawCircle(count, 110, 30);
DrawCircle(count, 160, 30);
DrawCircle(count, 210, 30);
}
for count = 1 to da.height{
SetColorRGB(count%255, (count/4)%255, (count*12)%255);
for count2 = 0 to da.width step 5{
DrawRect(count2,count,30,30,count2);
}
}
for count = 1 to da.width{
SetColorRGB(count%255, (count/4)%255, (count*16)%255);
for count2 = 10 to da.height-30 step 5{
DrawArcWedge(count,count2,20,30,count2,count2);
}
}
#clear and draw filled objects
SetColorRGB(0,0,0);
FillRect(0, 0, da.width, da.height);
for count = 1 to da.width{
SetColorRGB(count%255, (count/4)%255, (count*8)%255);
FillCircle(count, 10, 30);
FillCircle(count, 60, 30);
FillCircle(count, 110, 30);
FillCircle(count, 160, 30);
FillCircle(count, 210, 30);
}
for count = 1 to da.height{
SetColorRGB(count%255, (count/4)%255, (count*12)%255);
for count2 = 0 to da.width step 5{
FillRect(count2,count,30,30,count2);
}
}
for count = 1 to da.width{
SetColorRGB(count%255, (count/4)%255, (count*16)%255);
for count2 = 10 to da.height-30 step 5{
FillArcWedge(count,count2,20,30,count2,count2);
}
}
timeep.Running=0;
return timeep.Value;
}
func primeb(){
buttonPrime.widget.Set=1;
sleep(1);
tprimes=primes(18000);
splittime(tprimes);
tboxdata$=sprintf("%sCalculating the 18000th prime number took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonPrime.widget.Set=0;
sleep(1);
return tprimes;
}
func pib(){
buttonPi.widget.Set=1;
sleep(1);
tpis=pis(3000000);
splittime(tpis);
tboxdata$=sprintf("%sApproximating Pi took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonPi.widget.Set=0;
sleep(1);
return tpis;
}
func imgclassifyb(){
buttonIclass.widget.Set=1;
sleep(1);
ticfuzzyc=icfuzzyc();
splittime(ticfuzzyc);
tboxdata$=sprintf("%sImage Classifing took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonIclass.widget.Set=0;
sleep(1);
return ticfuzzyc;
}
func hdwriteb(){
buttonHDW.widget.Set=1;
sleep(1);
thdwrite=hdwrite(flaname$);
splittime(thdwrite);
tboxdata$=sprintf("%sWriting to hard drive took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonHDW.widget.Set=0;
sleep(1);
return thdwrite;
}
func hdreadb(){
buttonHDR.widget.Set=1;
sleep(1);
thdread=hdread(flaname$);
if (thdread<>0){
splittime(thdread);
tboxdata$=sprintf("%sReading from hard drive took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
}
buttonHDR.widget.Set=0;
sleep(1);
return thdread;
}
func hdreadrb(){
buttonHDRR.widget.Set=1;
sleep(1);
thdreadr=hdreadrandom(flaname$);
if (thdreadr<>0){
splittime(thdreadr);
tboxdata$=sprintf("%sReading from hard drive randomly took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
}
buttonHDRR.widget.Set=0;
sleep(1);
return thdreadr;
}
func drawb(){
buttonDraw.widget.Set=1;
sleep(1);
tdraw=godraw(da);
splittime(tdraw);
tboxdata$=sprintf("%sDrawing to screen took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonDraw.widget.Set=0;
sleep(1);
return tdraw;
}
func buttons(){
buttonButtons.widget.Set=1;
tbuttons=lotsabuttons();
splittime(tbuttons);
tboxdata$=sprintf("%sDrawing buttons took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonButtons.widget.Set=0;
sleep(1);
return tbuttons;
}
func dimages(){
buttonDimagess.widget.Set=1;
sleep(1);
timages=dispimage();
splittime(timages);
tboxdata$=sprintf("%sDisplaying image took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonDimagess.widget.Set=0;
sleep(1);
return timages;
}
func dvector(){
buttonDvector.widget.Set=1;
sleep(1);
tvector=dispvector();
splittime(tvector);
tboxdata$=sprintf("%sDisplaying vector took: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
buttonDvector.widget.Set=0;
return tvector;
}
proc all(){
tboxdata$="";
if(PopupYesNo("Did you close all other programs and disable all extensions?",0)){
primeb();
pib();
imgclassifyb();
hdwriteb();
hdreadb();
drawb();
buttons();
dimages();
dvector();
splittime(tprimes+tpis+ticfuzzyc+thdwrite+thdread+thdreadr+tdraw+tbuttons+timages+tvector);
tboxdata$=sprintf("%sTotal time: %s",tboxdata$, formatedtime$);
forceprint(ta,tboxdata$);
}
buttonAll.widget.Set=0;
sleep(1);
}
#
#Begin main program
#
#-----------------------------------------------------
#
# Open the dialog Need to do this before creating the GC
# because until then the drawing area has no window.
# Would like a way around this. Could my CreateGC
# realize it first if necessary?
#
#-----------------------------------------------------
form = CreateFormDialog("SML Benchmarking");
DialogOpen(form);
form.x=10; #position form on the screen
form.y=10;
form.height=480; #set the form's size
form.width=550;
tframe= CreateFrame(form); #create a frame for text
tframe.height=160;
tframe.width=550;
frame = CreateFrame(form); #create a fame for drawing
button_row2= CreateFrame(form); #create a frame for buttons
button_row1=CreateFrame(form); #create a frame for benchmark buttons
frame.TopWidget = button_row1;
tframe.TopWidget = frame;
button_row2.TopWidget = tframe;
button_row2.LeftWidget = form;
button_row2.RightWidget =form;
#
# Create a GC (Graphics Context) for the drawing area
# You can have multiple gc's per drawing area. Drawing
# functions will always use the active GC.
#
#-----------------------------------------------------
da = CreateDrawingArea(frame,200,550);
class GC gc = CreateGCForDrawingArea(da);
#gc.TextStyle.JustifyRight = 1;
#WidgetAddCallback(da.ExposeCallback, godraw);
#statdlg=StatusDialogCreate(ta); # create status dialog so we can display test reliably
#scont=StatusContextCreate(statdlg);
ta = CreateLabel(tframe,"Please close all other running programs and disable all extensions\nbefore beginning the benchmarking process.");
ta.Height=200;
ta.Width=550;
ta.RecomputeSize=0;
#ta.Alignment = "ALIGNMENT_BEGINNING";
ActivateGC(gc); # Clear the drawing area
buttonExit = CreatePushButtonItem("Exit", cbQuit); #button name, and associated function
buttonSave = CreatePushButtonItem("Save Text", savetext);
buttonAll = CreateToggleButtonItem("All Benchmarks", all);
buttonAll.IconClass="processes32";
buttonAll.IconName="benchall";
buttonPrime = CreateToggleButtonItem("Prime", primeb);
buttonPrime.IconClass="processes32";
buttonPrime.IconName="primary";
buttonPi = CreateToggleButtonItem("Pi", pib);
buttonPi.IconClass="processes32";
buttonPi.IconName="pi";
buttonIclass = CreateToggleButtonItem("Image Classify", imgclassifyb);
buttonIclass.IconClass="processes32";
buttonIclass.IconName="imageclassify";
buttonHDW = CreateToggleButtonItem("Hard Drive Write", hdwriteb);
buttonHDW.IconClass="processes32";
buttonHDW.IconName="writehd";
buttonHDR = CreateToggleButtonItem("Hard Drive Read", hdreadb);
buttonHDR.IconClass="processes32";
buttonHDR.IconName="readhd";
buttonHDRR = CreateToggleButtonItem("Hard Drive Read Random", hdreadrb);
buttonHDRR.IconClass="processes32";
buttonHDRR.IconName="randomhd";
buttonDraw = CreateToggleButtonItem("Screen Draw", drawb);
buttonDraw.IconClass="processes32";
buttonDraw.IconName="screendraw";
buttonButtons = CreateToggleButtonItem("Draw Buttons", buttons);
buttonButtons.IconClass="processes32";
buttonButtons.IconName="icondisplay";
buttonDimagess = CreateToggleButtonItem("Display Image", dimages);
buttonDimagess.IconClass="processes32";
buttonDimagess.IconName="logo";
buttonDvector = CreateToggleButtonItem("Display Vector", dvector);
buttonDvector.IconClass="processes32";
buttonDvector.IconName="drawvector";
#buttonSave.hidden=1;
#buttonExit.hidden=1;
button_row11 = CreateIconButtonRow(button_row1, buttonAll, buttonPrime, buttonPi, buttonIclass, buttonHDW, buttonHDR, buttonDraw, buttonButtons, buttonDimagess, buttonDvector); #create buttons
button_row22 = CreateButtonRow(button_row2, buttonExit, buttonSave); #create buttons
#button_row.BottomWidget = form; #draw buttons
clear();
print(outputfile$);
#PopupMessage("Create a text file");
#flaname$ = GetOutputFileName("c:/temp/njh.txt", "Make text file for writing", "txt");
flaname$ = FileNameGetPath(datafile$) + "deleteme.txt";
tboxdata$="";
sleep(1);
clear();
print(tboxdata$);
#buttonSave.hidden=0;
#buttonExit.hidden=0;
PopupMessage("You may not see graphics being displayed\nbecause of the speed and characteristics\nof your computer. The benchmarks are\nstill being performed properly.");
DialogWaitForClose(form); # wait till window is closed before exiting
Exit();
#StatusDialogDestroy(statdlg);
©MicroImages, Inc. 2013 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010 USA
Business & Sales: (402)477-9554 Support: (402)477-9562 Fax: (402)477-9559
Business info@microimages.com
Support support@microimages.com
Web webmaster@microimages.com
|