|
// グラフィックを使ったiアプリベンチマーク // by de. 2001 // 改変などはご自由にどうぞ。 import com.nttdocomo.ui.*; import com.nttdocomo.util.*; import java.util.Random; //メインのクラス public class IgBench extends IApplication { private IgBenchCanvas canvas; public void start(){ canvas=new IgBenchCanvas(this); Display.setCurrent(canvas); } } //-- IgBenchCanvasクラス class IgBenchCanvas extends Canvas { //-- このクラスで使う変数の定義 private IApplication application; long tStart,tCurrent; String szMes1,szMes2; //-- コンストラクタ public IgBenchCanvas(IApplication application) { this.application=application; tStart = System.currentTimeMillis(); szMes1 = "iアプリベンチ"; szMes2 = "(整数 + 描画版)"; setSoftLabel(Frame.SOFT_KEY_1, "開始"); setSoftLabel(Frame.SOFT_KEY_2, "終了"); } // -- [イベント] ソフトキーが押された public void processEvent(int type,int param){ if ((type==Display.KEY_PRESSED_EVENT) && (param==Display.KEY_SOFT2)){ application.terminate(); } if ((type==Display.KEY_RELEASED_EVENT) && (param==Display.KEY_SOFT1)){ int a0,a1,i; long t; szMes1 = "計測中"; szMes2 = "(整数)"; repaint(); //---整数演算 t = System.currentTimeMillis(); for(i = 0; i < 50000; i++) { a0 = a1 = 1; a1 = (a1 * 3 - a0 * 2) % 3; } t = System.currentTimeMillis() - t; szMes1 = "計測中"; szMes2 = "(描画)"; repaint(); //--- グラフィック tStart = System.currentTimeMillis(); DoBenchWork(); //-- ベンチ本体をコール tCurrent = System.currentTimeMillis() - tStart; // szMes1 = "結果(数値) : " + Long.toString(t) + "ms"; szMes2 = "結果(描画) : " + Long.toString(tCurrent) + "ms"; repaint(); } } /* --- 開始・終了 --- */ public void paint(Graphics g) { Font font; int maxX=getWidth(); int maxY=getHeight(); font=Font.getDefaultFont(); g.setColor(g.getColorOfName(Graphics.WHITE)); g.fillRect(0,maxY/2-font.getHeight(), maxX,font.getHeight()*3); g.setColor(g.getColorOfName(Graphics.BLACK)); g.drawString(szMes1, getWidth ()/2-font.stringWidth(szMes1)/2, getHeight()/2-font.getHeight()/2+font.getAscent()); g.drawString(szMes2, getWidth ()/2-font.stringWidth(szMes2)/2, getHeight()/2+font.getHeight()/2+font.getAscent()); } //-- ベンチマークワーク実行 private void DoBenchWork() { int i,x,y; int maxX,maxY; int rcolor; Graphics g; Random r = new Random(); g=getGraphics(); maxX = getWidth(); maxY = getHeight(); x=0; y=0; for(i=0;i<100;i++){ x =x+1; if(x>(maxX-49)){ x=0; y=y+1; }; rcolor = r.nextInt() % 3; g.lock(); switch(rcolor){ case 0: g.setColor(g.getColorOfName(Graphics.RED)); break; case 1: g.setColor(g.getColorOfName(Graphics.GREEN)); break; case 2: g.setColor(g.getColorOfName(Graphics.GRAY)); } g.fillRect(x,y,48,48); tCurrent = System.currentTimeMillis() - tStart; szMes1 = "Now : " + Long.toString(tCurrent) + "ms"; g.unlock(false); } } } |
(2001年2月21日)
[Text by 大和哲]