1e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/*******************************************************************************
234cd880f4e52a32b9f88ed4ea687b8f3f892395bEvgeny Mandrikov * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
3e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * All rights reserved. This program and the accompanying materials
4e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0
5e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * which accompanies this distribution, and is available at
6e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html
7e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *
8e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Contributors:
9e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *    Marc R. Hoffmann - initial API and implementation
10e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *
11e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *******************************************************************************/
12e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpackage org.jacoco.core.test.perf.targets;
13e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
14ac07e252571819685d3f74cb69c90c23abd340a0Marc R. Hoffmannimport java.util.concurrent.Callable;
15ac07e252571819685d3f74cb69c90c23abd340a0Marc R. Hoffmann
16e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/**
17e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Plain method calls.
18e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov */
19ac07e252571819685d3f74cb69c90c23abd340a0Marc R. Hoffmannpublic class Target01 implements Callable<Void> {
20e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
21e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@SuppressWarnings("unused")
22e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	private int c;
23e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
24e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 0 = 1 times
25ac07e252571819685d3f74cb69c90c23abd340a0Marc R. Hoffmann	public Void call() throws Exception {
26e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m1();
27e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m1();
28e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m1();
29e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m1();
30e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
31ac07e252571819685d3f74cb69c90c23abd340a0Marc R. Hoffmann		return null;
32e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
33e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
34e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 1 = 4 times
35e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m1() {
36e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m2();
37e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m2();
38e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m2();
39e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m2();
40e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
41e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
42e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
43e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 2 == 16 times
44e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m2() {
45e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m3();
46e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m3();
47e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m3();
48e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m3();
49e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
50e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
51e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
52e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 3 == 64 times
53e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m3() {
54e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m4();
55e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m4();
56e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m4();
57e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m4();
58e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
59e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
60e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
61e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 4 == 256 times
62e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m4() {
63e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m5();
64e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m5();
65e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m5();
66e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m5();
67e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
68e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
69e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
70e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 5 == 1,024 times
71e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m5() {
72e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m6();
73e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m6();
74e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m6();
75e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m6();
76e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
77e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
78e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
79e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 6 == 4,096 times
80e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m6() {
81e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m7();
82e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m7();
83e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m7();
84e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m7();
85e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
86e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
87e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
88e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 7 == 16,384 times
89e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m7() {
90e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m8();
91e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m8();
92e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m8();
93e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m8();
94e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
95e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
96e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
97e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 8 == 65,536 times
98e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m8() {
99e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m9();
100e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m9();
101e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m9();
102e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m9();
103e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
104e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
105e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
106e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 9 == 262,144 times
107e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m9() {
108e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m10();
109e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m10();
110e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m10();
111e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m10();
112e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
113e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
114e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
115e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 10 == 1,048,576 times
116e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m10() {
117e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m11();
118e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m11();
119e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m11();
120e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		m11();
121e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
122e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
123e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
124e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	// 4 ^ 11 == 4,194,304 times
125e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void m11() {
126e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		c++; // some side effect, otherwise the JIT will remove the method
127e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
128e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
129e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov}
130