追記2015/01/06
テストコードを追加してみました。
Robotiumを使ってボタン連打してます。
clickOnButtonの引数にボタンのtextやらid渡すと押せるんですね。
座標を渡してタッチさせるメソッドもあるみたいです。
package com.futabooo.clicklistenerspeed;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import com.robotium.solo.Solo;
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
private Solo mSolo;
public MainActivityTest() {
super(MainActivity.class);
}
public void setUp() throws Exception {
mSolo = new Solo(getInstrumentation(), getActivity());
super.setUp();
getActivity().arrayList.clear();
}
public void tearDown() throws Exception {
mSolo.finishOpenedActivities();
super.tearDown();
}
public void testClickButton1() {
for (int i = 0; i < 100; i++) {
mSolo.clickOnButton("button1");
}
long sum = 0;
for (int i = 0; i < getActivity().arrayList.size(); i++) {
sum =+ getActivity().arrayList.get(i);
}
Log.d("Button1 平均タイム = ", "" + sum/getActivity().arrayList.size());
}
public void testClickButton2() {
for (int i = 0; i < 100; i++) {
mSolo.clickOnButton("button2");
}
long sum = 0;
for (int i = 0; i < getActivity().arrayList.size(); i++) {
sum =+ getActivity().arrayList.get(i);
}
Log.d("Button2 平均タイム = ", "" + sum/getActivity().arrayList.size());
}
public void testClickButton3() {
for (int i = 0; i < 100; i++) {
mSolo.clickOnButton("button3");
}
long sum = 0;
for (int i = 0; i < getActivity().arrayList.size(); i++) {
sum =+ getActivity().arrayList.get(i);
}
Log.d("Button3 平均タイム = ", "" + sum/getActivity().arrayList.size());
}
}
はじめに
はじめましてfutaboooです。
勢いでAndroid Advent Calendarに登録したものの、ついさっきまで何を書いていいのかもわからず超焦っていました。
そして思いついたのがこのClickイベントの速度計測です。
可読性などで語られる記事はよく見かけるのですが、ぶっちゃけどれが早いの?というのが気になっていたので今回オレオレ測定をしてみました。
結論
試したのは下記3つの実装方法です。
1 ActivityにimplementsしたOnClickListerを渡す
2 setOnClickListenerの時点でOnClickListenerをnewして渡す
3 setOnClickListenerに無名クラスで用意しておいたOnClickListenerを渡す
それぞれ100回測定した平均nano秒が下記になります。
nano秒なのでこの差がなんぼのもじゃい!という感じではありますが、結果として2番の
setOnClickListenerの時点でOnClickListenerをnewして渡す実装が一番はやいようです。
1 | 2 | 3 | |
---|---|---|---|
平均nano秒 | 226010.5 | 195421.9 | 206880.2 |
今回しようしたコードはGitHubにあげておきました。
https://github.com/futabooo/ClickListenerSpeed
終わりに
来年はもっと準備をしていいTips書けるように頑張りますorz