Author:
theagentd (posted
2014-04-30 04:30:20 , viewed 555 times)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package drone .test ;
import java .util .Arrays ;
import java .util .Random ;
import net .mokyu .threading .MultithreadedExecutor ;
import drone .util .sort .InsertionSort ;
import drone .util .sort .ParallelInsertionSort ;
import engine .etc .SimpleComparator ;
public class SortTest {
private static final int numElements = 5_000_000 ;
private static final int numThreads = 8 ;
private static final int numChunks = 32 ;
private static final int shuffleDisplacement = 25 ;
public static void main (String [] args ) {
MultithreadedExecutor executor = new MultithreadedExecutor (numThreads );
ParallelInsertionSort <Element > parallelInsertionSort = new ParallelInsertionSort <>(numChunks );
Element [] array1 = new Element [numElements ];
Element [] array2 = new Element [numElements ];
Element [] array3 = new Element [numElements ];
Element [] array4 = new Element [numElements ];
SimpleComparator <Element > comparator = new SimpleComparator <Element >() {
public int compare (Element e1 , Element e2 ) {
return Integer .compare (e1 .value , e2 .value );
}
};
System .out .println ("Generating values..." );
Random r = new Random ();
for (int i = 0 ; i < numElements ; i ++){
array1 [i ] = new Element (r .nextInt ());
}
System .out .println ("Sorting values..." );
Arrays .sort (array1 , 0 , numElements , comparator );
System .out .println ("Copying values to other arrays..." );
for (int i = 0 ; i < numElements ; i ++){
Element e = array1 [i ];
array2 [i ] = e ;
array3 [i ] = e ;
array4 [i ] = e ;
}
System .out .println ("Done." );
while (true ){
shuffle (array1 );
shuffle (array2 );
shuffle (array3 );
shuffle (array4 );
long startTime ;
startTime = System .nanoTime ();
Arrays .sort (array1 , 0 , numElements , comparator );
System .out .println ("Java sort unsorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
Arrays .sort (array1 , 0 , numElements , comparator );
System .out .println ("Java sort sorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
Arrays .parallelSort (array2 , 0 , numElements , comparator );
System .out .println ("Java parallel sort unsorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
Arrays .parallelSort (array2 , 0 , numElements , comparator );
System .out .println ("Java parallel sort sorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
InsertionSort .sort (array3 , 0 , numElements , comparator );
System .out .println ("Insertion sort unsorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
InsertionSort .sort (array3 , 0 , numElements , comparator );
System .out .println ("Insertion sort sorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
parallelInsertionSort .sort (array4 , 0 , numElements , comparator , executor );
System .out .println ("Parallel insertion sort unsorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
startTime = System .nanoTime ();
parallelInsertionSort .sort (array4 , 0 , numElements , comparator , executor );
System .out .println ("Parallel insertion sort sorted: " + (System .nanoTime () - startTime ) / 1000 / 1000f + " ms" );
System .out .println ("First elements: " + array1 [0 ] + ", " + array2 [0 ] + ", " + array3 [0 ] + ", " + array4 [0 ] + '\n' );
}
}
private static void shuffle (Object [] ar ){
Random rnd = new Random ();
for (int i = shuffleDisplacement ; i < ar .length ; i ++){
int index = i - rnd .nextInt (shuffleDisplacement );
Object a = ar [index ];
ar [index ] = ar [i ];
ar [i ] = a ;
}
}
private static class Element {
private int value ;
public Element (int value ) {
this .value = value ;
}
}
}
Special syntax:
To highlight a line (yellow background), prefix it with '@@'
To indicate that a line should be removed (red background), prefix it with '-'
To indicate that a line should be added (green background), prefix it with '+'
To post multiple snippets, seperate them by '~~~~'
ivj94
(586 views)
2018-03-24 14:47:39
ivj94
(49 views)
2018-03-24 14:46:31
ivj94
(383 views)
2018-03-24 14:43:53
Solater
(63 views)
2018-03-17 05:04:08
nelsongames
(110 views)
2018-03-05 17:56:34
Gornova
(159 views)
2018-03-02 22:15:33
buddyBro
(704 views)
2018-02-28 16:59:18
buddyBro
(93 views)
2018-02-28 16:45:17
xxMrPHDxx
(494 views)
2017-12-31 17:17:51
xxMrPHDxx
(734 views)
2017-12-31 17:15:51
java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org