Registriert seit: 18. Feb 2005
286 Beiträge
Delphi 2010 Enterprise
|
AW: Schnittmenge von mehreren Mengen ermitteln
20. Mär 2012, 15:35
Code:
11 Messungen:
function Intersect(var Left: TSampleArray; const Right: TSampleArray);
* mit Length(Left) = Length(Right) = N = 10000000 // 10 Mio.
* mit denselben Daten für jede Routine
* mit zufällig generierten Daten für jede Messung
* in Millisekunden
Messung #19, Pascal #39, Pascal #61, Pascal #35, Assembler #59, Assembler
1 270 225 209 64 104
2 241 220 196 65 105
3 249 220 207 64 100
4 245 218 206 61 104
5 262 226 196 61 102
6 241 236 194 61 106
7 247 226 196 61 103
8 257 216 196 61 105
9 258 215 199 61 104
10 261 216 196 63 103
11 248 218 197 66 103
Mittelwert 252,636 221,455 199,273 62,545 103,545
Standardabweichung 9,500 6,283 5,350 1,916 1,635
Mein Algorithmus sollte nun auch fehlerfrei sein.
Das letzte Programm von Horst lässt sich nur mit {$DEFINE INT64DATA} kompilieren. Die Messungen sind aber nicht zuverlässig, weil die Hitzeregulierung mittendrin den Prozessortakt verändert.
Code:
Testlauf mit gleichen Feldern
Laenge Ausgangsfeld 5000000
Pascal #19 | 4999999
Pascal #39 | 5000000
Pascal #39p| 5000000
Pascal #51 | 5000000
Pascal #61 | 5000000
Assem #59 | 5000000
-1 bei falscher Laenge
Pascal #19 |Pascal #39 |Pascal #39p|Pascal #51 |Pascal #61 |Assem #59 |
0 1479473| 942698| 962416| 619718| 869753| 256950|
1 1237576| 984844| 1067793| 808219| 849550| 333418|
0 1188971| 970760| 949159| 689957| 896708| 241256|
1 1248376| 967134| 1073641| 773794| 881661| 332663|
0 1146181| 1134064| 960496| 604081| 1015837| 277104|
1 1451410| 1086576| 1069443| 729483| 868560| 328100|
0 1162970| 977305| 956732| 651758| 916255| 239902|
1 1234589| 1002855| 1082293| 805464| 1084635| 406615|
0 1404511| 927632| 1018545| 596848| 904477| 241852|
1 1235117| 997919| 1076292| 754609| 873866| 366354|
0 1233630| 970846| 984954| 617806| 920718| 266788|
1 1223514| 1053170| 1045890| 820487| 914746| 337277|
Mittelwert
1251531 1006646 1025931 713864 920638 306484
Standardabweichung
93849 60489 53601 85766 69511 56339
Fertig.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
|
|
Zitat
|