abstractでextendsしたクラスへのコールバック?と、interfaceを使ったコールバックだとabstractの方が早い。
Core-i5で5倍ほど差が出た。
多分Android上だともっと差がでるんだろうかな。
多分Android上だともっと差がでるんだろうかな。
・AbstractThread.java
public abstract class AbstractThread extends Thread implements Runnable { abstract public void run(); }
・CallbackThread.java
public class CallbackThread extends Thread implements Runnable { public interface CallBack { void onCallback(int value); } private CallBack lis; void setCallBack(CallBack listener) { this.lis = listener; } @Override public void run() { long startTime = System.nanoTime(); for (int i = 0; i < Main.LOOP; i++) { if (lis != null) { lis.onCallback(i); } } long procTime = System.nanoTime() - startTime; System.out.println("Callback:" + procTime / Main.LOOP + "[ns]"); } }・Main.java
public class Main { public static void main(String[] args) { CallbackThread thread = new CallbackThread(); CallbackThread.CallBack call = new CallBack() { @Override public void onCallback(int value) { // System.out.println(value); } }; thread.setCallBack(call); thread.start(); AbstractThread athread = new AbstractThread() { @Override public void run() { long startTime = System.nanoTime(); for (int i = 0; i < LOOP; i++) { // System.out.println(i); } long procTime = System.nanoTime() - startTime; System.out.println("Abstract:" + procTime / LOOP + "[ns]"); } }; athread.start(); } }
0 件のコメント:
コメントを投稿