41 import java.util.Arrays;
42 import java.util.Random;
44 import static java.lang.Integer.parseInt;
56 private final Random
random =
new Random(759123751834L);
80 if (args.length <
start + 3) {
81 throw new IllegalArgumentException(
"Too few elements in array");
86 public int get(
int iteration) {
96 StringBuilder builder =
new StringBuilder();
98 return builder.toString();
112 new Range(2, 2, 10));
126 if (args.length == 0) {
130 if (args.length == 6) {
133 }
catch (NumberFormatException e) {
134 System.err.println(
"MergeExample: error: Argument was not a number.");
136 System.err.println(
"MergeExample <size start> <size step> <size steps> <parallel start> <parallel step>" +
137 " <parallel steps>");
138 System.err.println(
"example: MergeExample 20000 10000 3 1 1 4");
139 System.err.println(
"example: will run with arrays of sizes 20000, 30000, 40000" +
140 " and parallelism: 1, 2, 3, 4");
155 StringBuilder builder =
new StringBuilder(
"");
157 builder.append(
"Default configuration. ");
159 builder.append(
"Running with parameters: ");
160 builder.append(
sizes);
163 return builder.toString();
173 int[] array =
new int[elements];
174 for (
int i = 0; i < elements; ++i) {
175 array[i] =
random.nextInt();
208 System.out.println(
"Time in milliseconds. Y-axis: number of elements. X-axis parallelism used.");
209 long[] sums =
new long[times[0].length];
210 System.out.format(
"%8s ",
"");
211 for (
int i = 0; i < times[0].length; i++) {
212 System.out.format(
"%4d ", parallelism.
get(i));
214 System.out.println(
"");
216 System.out.format(
"%8d: ", sizes.
get(
size));
217 for (
int i = 0; i < times[
size].length; i++) {
218 sums[i] += times[
size][i];
219 System.out.format(
"%4d ", times[
size][i]);
221 System.out.println(
"");
223 System.out.format(
"%8s: ",
"Total");
224 for (
long sum : sums) {
225 System.out.format(
"%4d ", sum);
227 System.out.println(
"");
231 for (
int step = 0; step < parallelism.
getIterations(); step++) {
246 long[] times =
new long[iterations];
248 for (
int i = 0; i < iterations; i++) {
252 long start = System.currentTimeMillis();
254 times[i] = System.currentTimeMillis() - start;
266 if (times.length == 0) {
267 throw new IllegalArgumentException(
"Empty array");
270 Arrays.sort(times.clone());
271 long median = times[times.length / 2];
272 if (times.length > 1 && times.length % 2 != 0) {
273 median = (median + times[times.length / 2 + 1]) / 2;
283 for (
int i = 0; i < 1000; i++) {
288 public static void main(String[] args) {
290 if (configuration ==
null) {
293 System.out.println(configuration);