home products news downloads documentation support gallery online maps resellers search
TNTmips Downloads Menu

HOME

CONTACT US

CURRENT RELEASE
  TNT 2013

DEVELOPMENT VERSION
  TNT 2014

TNTmips Pro
PRIOR RELEASES
  TNT 2012

FREE SOFTWARE
  TNTmips Free
  TNTatlas
  TNTsdk

MORE DOWNLOADS
  HASP Key Driver
  Screen Recorder
  TNT Language Kits
  Sample Geodata
  TNT Scripts

DOCUMENTATION
  TNTmips Tutorials
  Tutorial Datasets
  Technical Guides
  Scripts
  Quick Guides

MORE INFO
  Download FAQs
  FTP
  Download Managers
  Find Reseller

SITE MAP


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);


Back Home ©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

25 March 2009

page update: 26 May 11