*/
@Test
public void runBenchmark() {
- if (handler != null) {
+ if (logger != null && handler != null) {
logger.addHandler(handler);
}
}
private static void runTest(Logger log, int nbThreads) {
- long start, end, average, total = 0;
+ long total = 0;
for (int i = 0; i < NB_RUNS; i++) {
Runner runner = new Runner(nbThreads, NB_ITER, log);
- start = System.nanoTime();
+ long start = System.nanoTime();
runner.run();
- end = System.nanoTime();
+ long end = System.nanoTime();
total += (end - start);
}
- average = total / NB_RUNS;
- System.out.println(nbThreads + " threads, average = " + average / NB_ITER + " ns/event");
+ long average = (total / NB_RUNS);
+ System.out.println(nbThreads + " threads, average = " + average / NB_ITER + " ns/loop");
}
// ------------------------------------------------------------------------
@Override
public void run() {
- for (Thread curThread : workerThreads) {
- curThread.start();
- }
+ workerThreads.forEach(Thread::start);
- for (Thread curThread : workerThreads) {
+ workerThreads.forEach(t -> {
try {
- curThread.join();
+ t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
- }
+ });
}
private static class Worker implements Runnable {
private final int threadId;
private final int nbIter;
+ @SuppressWarnings("unused")
+ private volatile int value = 0;
+
public Worker(int threadId, int nbIter, Logger log) {
this.log = log;
this.threadId = threadId;
@Override
public void run() {
for (int i = 0; i < nbIter; i++) {
- log.info("Thread " + threadId + ", iteration " + i);
+ value = i;
+ if (log != null) {
+ log.info("Thread " + threadId + ", iteration " + i);
+ }
}
}
-
}
}
}
--- /dev/null
+/*
+ * Copyright (C) 2016, EfficiOS Inc., Alexandre Montplaisir <alexmonthy@efficios.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+package org.lttng.ust.agent.benchmarks.jul.handler.builtin;
+
+import org.junit.After;
+import org.junit.Before;
+import org.lttng.ust.agent.benchmarks.jul.handler.JulHandlerBenchmarkBase;
+
+/**
+ * Benchmark that will avoid creating a Logger entirely, to benchmark just the
+ * bare worker.
+ */
+public class NoLoggerBenchmark extends JulHandlerBenchmarkBase {
+
+ /**
+ * Override the super class's setup() to avoid creating a Logger.
+ */
+ @Override
+ @Before
+ public void setup() {
+ logger = null;
+ handler = null;
+ }
+
+ /**
+ * Override the super class's teardown()
+ */
+ @Override
+ @After
+ public void teardown() {
+ }
+}