所以我正在为Android构建一些基准测试应用程序,以便评估不同的技术(Flex
,Native
,Html5
等),并根据我的方法确定哪种最好。
我遇到的问题是,虽然Native应用程序在简单的算术测试中无法比拟,但在读取或写入文件时却不一样。
更具体的是,Native
应用程序从1到10米计算得分为92毫秒,而Flex
需要相同动作的平均13秒。
在阅读10000行文本时,当Native
需要450时,Flex
应用程序需要800毫秒,而当flex仅花费860毫秒时,原生应用需要3560毫秒。
第一次测试的唯一区别是本机应用在flex
使用Filestream
时使用了buffertream。这会导致这种不一致吗?任何想法从哪里开始?
答案 0 :(得分:0)
我正在使用java作为我的母语。所以这是我的来源:
软硬度:
loadingLbl.visible=true;
var startTime:int = getTimer();
te1.text=""+startTime;
var file:File = File.desktopDirectory.resolvePath("samples/test.txt");
var pathFile:String = file.nativePath;
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
for(i=0; i<=100000; i++)
{
//list.dataProvider.addItem(""+i);
stream.writeUTFBytes("word"+i+"\n");
}
stream.close();
results.text=""+file.nativePath;
var currentTime:int = getTimer();
var timeRunning:int = (currentTime - startTime);
te0.text=""+currentTime;
timerLabel.text= "Total time: "+timeRunning+" ms";
loadingLbl.visible=false;
Android版:
{
String temp="";
TextView time = (TextView)findViewById(R.id.timerLbl);
long start=System.nanoTime();
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File myfile = new File(sdcard,"myFile.txt");
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(myfile));
for(int i=0;i<100000;i++)
{
temp="word"+i;
writer.write(temp);
writer.newLine();
}
writer.flush();
writer.close();
} catch (FileNotFoundException e) {
// handle exception
} catch (IOException e) {
// handle exception
}
TextView tv = (TextView)findViewById(R.id.result);
//Set the text
tv.setText("Last word was: "+temp);
long end=System.nanoTime();
time.setText("Took: " + ((end - start) / 1000000+"ms"));
}
使用缓冲区写入器的差异可能是得到不同结果的来源吗?