From b6f6a0afdacead5c05a939511b5d0bee021f641e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Thu, 1 Mar 2012 21:26:57 +0100 Subject: Add Benchmarking activity. --- .../benchmark/RepeatedSetVariableActivity.java | 85 ++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 same-android/src/main/java/com/orbekk/same/android/benchmark/RepeatedSetVariableActivity.java (limited to 'same-android/src/main/java/com/orbekk/same/android/benchmark/RepeatedSetVariableActivity.java') diff --git a/same-android/src/main/java/com/orbekk/same/android/benchmark/RepeatedSetVariableActivity.java b/same-android/src/main/java/com/orbekk/same/android/benchmark/RepeatedSetVariableActivity.java new file mode 100644 index 0000000..7940939 --- /dev/null +++ b/same-android/src/main/java/com/orbekk/same/android/benchmark/RepeatedSetVariableActivity.java @@ -0,0 +1,85 @@ +package com.orbekk.same.android.benchmark; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import android.app.Activity; +import android.os.Bundle; +import android.widget.Toast; + +import com.orbekk.same.Types; +import com.orbekk.same.Variable; +import com.orbekk.same.Variable.OnChangeListener; +import com.orbekk.same.android.ClientInterfaceBridge; + +public class RepeatedSetVariableActivity extends Activity { + private Logger logger = LoggerFactory.getLogger(getClass()); + public static final int WARMUP_ITERATIONS = 10; + public static final int ITERATIONS = 100; + private ClientInterfaceBridge client; + + private int warmupIterationsPerformed; + private int iterationsPerformed; + private Timer timer; + + private Variable variable; + + private OnChangeListener changeListener = + new OnChangeListener() { + @Override + public void valueChanged(Variable variable) { + variable.update(); + timer.stop(); + iterationFinished(); + if (iterationsPerformed < ITERATIONS) { + timer.start(); + variable.set(variable.get() + 1); + } else { + finalizeBenchmark(); + } + } + }; + + private void finalizeBenchmark() { + logger.info("Benchmark finished. Samples: " + timer); + } + + /** Returns whether or not we should continue. */ + private void iterationFinished() { + if (warmupIterationsPerformed < WARMUP_ITERATIONS) { + warmupIterationsPerformed += 1; + } else { + iterationsPerformed += 1; + } + } + + @Override public void onCreate(Bundle savedBundle) { + super.onCreate(savedBundle); + } + + public void onResume() { + super.onResume(); + Toast.makeText(this, "Starting benchmark", Toast.LENGTH_LONG).show(); + + timer = new Timer(WARMUP_ITERATIONS + ITERATIONS); + warmupIterationsPerformed = 0; + iterationsPerformed = 0; + client = new ClientInterfaceBridge(this); + client.connect(); + initializeVariable(); + } + + public void initializeVariable() { + variable = client.createVariableFactory() + .create("BenchmarkVariable", Types.fromType(Integer.class)); + variable.addOnChangeListener(changeListener); + timer.start(); + variable.set(0); + } + + public void onStop() { + super.onStop(); + client.disconnect(); + } + +} -- cgit v1.2.3