Difference between revisions of "Comparing Different Computers with N Queens Program"
m (Thiebaut moved page Comparing Processor/Memory Speed with N Queens to Comparing Different Computers with N Queens Program) |
(→N-Queens on a 16 MHz Arduino) |
||
(35 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
--[[User:Thiebaut|D. Thiebaut]] ([[User talk:Thiebaut|talk]]) 11:05, 24 October 2014 (EDT) | --[[User:Thiebaut|D. Thiebaut]] ([[User talk:Thiebaut|talk]]) 11:05, 24 October 2014 (EDT) | ||
---- | ---- | ||
− | + | <br /> | |
− | This is an example of how one can | + | <bluebox> |
− | + | This is an example of how one can generate a quick comparison of the processing power of different systems using a CPU-bound (not using disk or network) application. This app in this case is a java program that finds the solution to the N-Queens problem while counting the number of probes it makes to the 2-D board. The source code is available [[N-Queens_In_Java,_Counting_the_Number_of_Probes|here]]. | |
− | + | </bluebox> | |
− | + | <br /> | |
− | Here are some results gathered | + | <br /> |
− | # Macbook Pro, 2.8 GHz Core i7, 16GB 1600MHz DDR3 | + | =Source Code= |
− | # MacPro, 2009 | + | <br /> |
− | # MacPro, 2014 | + | The N-Queens program in C is available [[N-Queens_in_C| here]]. The N-Queens in Java is available [[N-Queens_Problem_in_Java|here]] and also [[N-Queens_In_Java,_Counting_the_Number_of_Probes|here]]. |
− | # Beowulf2 | + | <br /> |
− | + | =Timing= | |
+ | <br /> | ||
+ | Here are some results gathered on several different processor systems. NxN is the dimension of the board. The different systems are: | ||
+ | # Macbook Pro, 2009, 2.53 GHz, Intel Core 2 Duo, 8GB 1067MHz DDR3, 2 cores | ||
+ | # Macbook Pro, 2014, 2.8 GHz Core i7, 16GB 1600MHz DDR3, 4 cores | ||
+ | # MacPro, 2009, Intel(R) Xeon(R) CPU E5462, 4 cores | ||
+ | # MacPro, 2014, Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz, 6 cores | ||
+ | # Beowulf2, (year?) Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz, 1 core | ||
+ | # Laptop 1 = MSI GE62 Apache Pro 219, 2015, i7 5700hq @2.7GHz, 16.0 GB 1600MHz DDR3L, 4 cores | ||
+ | # Linux 8 = AMD FX(tm)-8320 Eight-Core Processor, 3.5 GHz, 2GB cache | ||
+ | # Arduino = Diecimilia, ATMega168 processor @ 16 MHz. | ||
+ | # Raspberry Pi 3, processor at 1.2 GHz | ||
+ | <br /> | ||
All times in the table below are in milliseconds (ms). | All times in the table below are in milliseconds (ms). | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <center> | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! NxN | ! NxN | ||
− | ! Macbook Pro | + | ! Macbook Pro<br />2009 |
− | ! MacPro 2009 | + | ! Macbook Pro<br /> 2014 |
− | ! MacPro 2014 | + | ! MacPro<br /> 2009 |
− | ! | + | ! MacPro<br /> 2014 |
+ | ! Linux Mint<br />Beowulf2 | ||
+ | ! Laptop 1 | ||
+ | ! Linux 8 | ||
+ | ! Arduino | ||
+ | ! Rasberry Pi 3 | ||
|- | |- | ||
| | | | ||
Line 46: | Line 66: | ||
29x29 | 29x29 | ||
30x30 | 30x30 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 1 | ||
+ | 0 | ||
+ | 26 | ||
+ | 17 | ||
+ | 37 | ||
+ | 28 | ||
+ | 87 | ||
+ | 19 | ||
+ | 144 | ||
+ | 36 | ||
+ | 750 | ||
+ | 81 | ||
+ | 242 | ||
+ | 92 | ||
+ | 248 | ||
+ | 284 | ||
+ | 1551 | ||
+ | 1518 | ||
+ | 33667 | ||
</source> | </source> | ||
| | | | ||
Line 150: | Line 196: | ||
684 | 684 | ||
22889 | 22889 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 1 | ||
+ | 1 | ||
+ | 5 | ||
+ | 1 | ||
+ | 24 | ||
+ | 1 | ||
+ | 221 | ||
+ | 3 | ||
+ | 56 | ||
+ | 7 | ||
+ | 58 | ||
+ | 69 | ||
+ | 469 | ||
+ | 244 | ||
+ | 9041 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 1 | ||
+ | 9 | ||
+ | 6 | ||
+ | 33 | ||
+ | 23 | ||
+ | 60 | ||
+ | 16 | ||
+ | 99 | ||
+ | 29 | ||
+ | 463 | ||
+ | 58 | ||
+ | 157 | ||
+ | 64 | ||
+ | 161 | ||
+ | 184 | ||
+ | 938 | ||
+ | 522 | ||
+ | 17252 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 493 | ||
+ | 2,585 | ||
+ | 14,016 | ||
+ | 81,831 | ||
+ | 512,952 | ||
+ | 3,387,865 | ||
+ | 23,779,229 | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | NA | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 1 | ||
+ | 1 | ||
+ | 7 | ||
+ | 4 | ||
+ | 29 | ||
+ | 2 | ||
+ | 148 | ||
+ | 7 | ||
+ | 1372 | ||
+ | 21 | ||
+ | 369 | ||
+ | 47 | ||
+ | 381 | ||
+ | 424 | ||
+ | 2884 | ||
+ | 1512 | ||
+ | 55523 | ||
+ | </source> | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <br /> | ||
+ | ==Comparing Java to C== | ||
+ | <br /> | ||
+ | This calls for a quick comparison of the Java to C implementation available [[N-Queens in C|here]], compiled by a C++ compiler with O3 optimization, and running on the fastest of the machines above, a MacBook Pro, 15" Retina Display, with a 2.8GHz 4-core processor. The computation uses only one core. All times are in milliseconds (ms). | ||
+ | <br /> | ||
+ | <center> | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! NxN | ||
+ | ! Java<br />1.7.0_60 | ||
+ | ! C<br />Compiled with g++<br />& -O3 optimization | ||
+ | |- | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 8x8 | ||
+ | 9x9 | ||
+ | 10x10 | ||
+ | 11x11 | ||
+ | 12x12 | ||
+ | 13x13 | ||
+ | 14x14 | ||
+ | 15x15 | ||
+ | 16x16 | ||
+ | 17x17 | ||
+ | 18x18 | ||
+ | 19x19 | ||
+ | 20x20 | ||
+ | 21x21 | ||
+ | 22x22 | ||
+ | 23x23 | ||
+ | 24x24 | ||
+ | 25x25 | ||
+ | 26x26 | ||
+ | 27x27 | ||
+ | 28x28 | ||
+ | 29x29 | ||
+ | 30x30 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 1 | ||
+ | 0 | ||
+ | 1 | ||
+ | 0 | ||
+ | 1 | ||
+ | 0 | ||
+ | 3 | ||
+ | 2 | ||
+ | 14 | ||
+ | 10 | ||
+ | 34 | ||
+ | 7 | ||
+ | 64 | ||
+ | 13 | ||
+ | 311 | ||
+ | 31 | ||
+ | 101 | ||
+ | 37 | ||
+ | 102 | ||
+ | 118 | ||
+ | 633 | ||
+ | 356 | ||
+ | 12586 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 1 | ||
+ | 0 | ||
+ | 4 | ||
+ | 0 | ||
+ | 17 | ||
+ | 1 | ||
+ | 159 | ||
+ | 2 | ||
+ | 40 | ||
+ | 5 | ||
+ | 40 | ||
+ | 49 | ||
+ | 319 | ||
+ | 170 | ||
+ | 6320 | ||
+ | </source> | ||
+ | |} | ||
+ | </center> | ||
+ | <br /> | ||
+ | For more information on the difference between Java, C, Python, and Assembly, go to this [[Speed_of_Instructions:_Nasm,_Java,_C%2B%2B_and_Python_comparison| page]]. | ||
+ | <br /> | ||
+ | |||
+ | <br /> | ||
+ | =N-Queens on a 16 MHz Arduino= | ||
+ | <br /> | ||
+ | The code for the N-Queens on the Arduino is available [[N-Queens on the Arduino| here]]. | ||
+ | <br /> | ||
+ | <center> | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! NxN | ||
+ | ! Elapsed Time in ms | ||
+ | |- | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 8x8 | ||
+ | 9x9 | ||
+ | 10x10 | ||
+ | 11x11 | ||
+ | 12x12 | ||
+ | 13x13 | ||
+ | 14x14 | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="text"> | ||
+ | 493 | ||
+ | 2,585 | ||
+ | 14,016 | ||
+ | 81,831 | ||
+ | 512,952 | ||
+ | 3,387,865 | ||
+ | 23,779,229 | ||
</source> | </source> | ||
|} | |} | ||
+ | </center> | ||
+ | <br /> | ||
+ | Note that 3,387,865 ms is 56 min, 28 seconds, and that 23,779,229 is 6 hours and 36 minutes! The Arduino is almost 6 and a half hours computing a result that took a Desktop machine less than 10 milliseconds to compute (Java or C++). | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | [[Category:Java]][[Category:Python]][[Category:C++]][[Category:Nasm]][[Category:Arduino]] |
Latest revision as of 10:30, 12 February 2017
--D. Thiebaut (talk) 11:05, 24 October 2014 (EDT)
This is an example of how one can generate a quick comparison of the processing power of different systems using a CPU-bound (not using disk or network) application. This app in this case is a java program that finds the solution to the N-Queens problem while counting the number of probes it makes to the 2-D board. The source code is available here.
Source Code
The N-Queens program in C is available here. The N-Queens in Java is available here and also here.
Timing
Here are some results gathered on several different processor systems. NxN is the dimension of the board. The different systems are:
- Macbook Pro, 2009, 2.53 GHz, Intel Core 2 Duo, 8GB 1067MHz DDR3, 2 cores
- Macbook Pro, 2014, 2.8 GHz Core i7, 16GB 1600MHz DDR3, 4 cores
- MacPro, 2009, Intel(R) Xeon(R) CPU E5462, 4 cores
- MacPro, 2014, Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz, 6 cores
- Beowulf2, (year?) Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz, 1 core
- Laptop 1 = MSI GE62 Apache Pro 219, 2015, i7 5700hq @2.7GHz, 16.0 GB 1600MHz DDR3L, 4 cores
- Linux 8 = AMD FX(tm)-8320 Eight-Core Processor, 3.5 GHz, 2GB cache
- Arduino = Diecimilia, ATMega168 processor @ 16 MHz.
- Raspberry Pi 3, processor at 1.2 GHz
All times in the table below are in milliseconds (ms).
NxN | Macbook Pro 2009 |
Macbook Pro 2014 |
MacPro 2009 |
MacPro 2014 |
Linux Mint Beowulf2 |
Laptop 1 | Linux 8 | Arduino | Rasberry Pi 3 |
---|---|---|---|---|---|---|---|---|---|
8x8
9x9
10x10
11x11
12x12
13x13
14x14
15x15
16x16
17x17
18x18
19x19
20x20
21x21
22x22
23x23
24x24
25x25
26x26
27x27
28x28
29x29
30x30
|
0
0
0
0
1
0
26
17
37
28
87
19
144
36
750
81
242
92
248
284
1551
1518
33667
|
1
0
1
0
1
0
3
2
14
10
34
7
64
13
311
31
101
37
102
118
633
356
12586
|
0
1
0
0
1
0
8
5
27
19
67
13
119
26
662
63
199
72
201
232
1250
687
23558
|
1
0
0
0
0
0
5
2
18
13
41
9
70
17
384
39
119
44
121
142
734
413
14158
|
0
0
0
0
1
1
17
14
46
31
104
22
152
50
610
101
226
111
227
257
1213
684
22889
|
0
0
0
0
0
0
0
0
1
1
5
1
24
1
221
3
56
7
58
69
469
244
9041
|
0
0
0
0
0
1
9
6
33
23
60
16
99
29
463
58
157
64
161
184
938
522
17252
|
493
2,585
14,016
81,831
512,952
3,387,865
23,779,229
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
|
0
0
0
0
0
0
1
1
7
4
29
2
148
7
1372
21
369
47
381
424
2884
1512
55523
|
Comparing Java to C
This calls for a quick comparison of the Java to C implementation available here, compiled by a C++ compiler with O3 optimization, and running on the fastest of the machines above, a MacBook Pro, 15" Retina Display, with a 2.8GHz 4-core processor. The computation uses only one core. All times are in milliseconds (ms).
NxN | Java 1.7.0_60 |
C Compiled with g++ & -O3 optimization |
---|---|---|
8x8
9x9
10x10
11x11
12x12
13x13
14x14
15x15
16x16
17x17
18x18
19x19
20x20
21x21
22x22
23x23
24x24
25x25
26x26
27x27
28x28
29x29
30x30
|
1
0
1
0
1
0
3
2
14
10
34
7
64
13
311
31
101
37
102
118
633
356
12586
|
0
0
0
0
0
0
0
0
1
0
4
0
17
1
159
2
40
5
40
49
319
170
6320
|
For more information on the difference between Java, C, Python, and Assembly, go to this page.
N-Queens on a 16 MHz Arduino
The code for the N-Queens on the Arduino is available here.
NxN | Elapsed Time in ms |
---|---|
8x8
9x9
10x10
11x11
12x12
13x13
14x14
|
493
2,585
14,016
81,831
512,952
3,387,865
23,779,229
|
Note that 3,387,865 ms is 56 min, 28 seconds, and that 23,779,229 is 6 hours and 36 minutes! The Arduino is almost 6 and a half hours computing a result that took a Desktop machine less than 10 milliseconds to compute (Java or C++).