????android ??Protobuff?????????????: protobuff?????  square????wire ?? protostuff
????????protobuff????????????????????????????????????????????????android??60K????????????? ??????β???δ????protobuff
????????????????100?????л?100?????????飬???????л???????????????????:
????wire????????:
public void onClickButton(View view){
if (TestTask.isCancel){
TestTask.isCancel = false;
TestTask.sumDeserializeTime = 0;
TestTask.sumTime = 0;
TestTask.runCount = 0;
TextView text1 = (TextView) findViewById(R.id.textView2);
text1.setText("");
new TestTask( (TextView) findViewById(R.id.textView2)
?? (TextView) findViewById(R.id.button1)).execute();
((TextView)view).setText("?????У?????ж?");
}else{
((TextView)view).setText("?????ж?...");
TestTask.isCancel = true;
}
}
static class TestTask extends AsyncTask<Void??Void??Long>{
long serializeTime=0;
long deserializeTime=0;
static long sumTime=0;
static long sumDeserializeTime=0;
static int runCount=0;
static boolean isCancel=true;
TextView text1;
TextView btn;
public TestTask(TextView text1??TextView btn) {
this.text1 = text1;
this.btn = btn;
}
@Override
protected Long doInBackground(Void... params) {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
List<ListItem> itemList = new ArrayList<ListItem>();
ListItem.Builder itemBuilder = new ListItem.Builder();
ListItem item;
for (int j = 0; j < 100; j++) {
item = itemBuilder.title("test Title"+i+":"+j)
.remark("test Remark"+i+":"+j)
.coverUrl("http://pic.ozreader.com/abc.pic")
.uri("PKB:TESTURI")
.build();
itemList.add(item);
}
ScrollList.Builder listBuilder= new ScrollList.Builder();
ScrollList list = listBuilder.haveMore(false).tags(itemList).build();
byte[] dataBuffer = list.toByteArray();
serializeTime = System.currentTimeMillis()-startTime;
Wire wire = new Wire();
try {
ScrollList resultList = wire.parseFrom(dataBuffer?? ScrollList.class);
if (resultList == null){
Log.e("TEST"?? "resultList is null");
break;
}else if (resultList.tags == null){
Log.e("TEST"?? "resultList.tags is null");
break;
}else if (resultList.tags.size() <= 0){
Log.e("TEST"?? "resultList.tags is empty");
break;
}else if (resultList.tags.size() != 100){
Log.e("TEST"?? "resultList.tags is wrong");
break;
}else if (!resultList.tags.get(0).uri.equals("PKB:TESTURI")){
Log.e("TEST"?? "resultList.tags content is wrong");
break;
}
deserializeTime = System.currentTimeMillis()-startTime-serializeTime;
} catch (IOException e) {
e.printStackTrace();
}
}
return System.currentTimeMillis() - startTime;
}
@Override
protected void onPostExecute(Long result) {
sumTime += result;
sumDeserializeTime += deserializeTime;
runCount ++;
text1.append("result:"+result+"?? serializeTime:"+serializeTime+"?? deserializeTime:"+deserializeTime+"?? runCount:"+runCount+"?? avg:"+sumTime/runCount+"?? avg deserializeTime:"+sumDeserializeTime/runCount+" ");
if (isCancel){
text1.append("?????ж?.");
btn.setText("???????");
}else if (runCount < 100){
new TestTask(text1??btn).execute();
}else{
isCancel = true;
text1.append("???????.");
btn.setText("???????");
}
}
}