8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidAdvent Calendar 2014

Day 23

Clickイベントが呼ばれるまでの時間を測ってみた

Last updated at Posted at 2014-12-23

追記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

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?