Einzelnen Beitrag anzeigen

Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#61

AW: Schnittmenge von mehreren Mengen ermitteln

  Alt 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.
Angehängte Dateien
Dateityp: pas Thema167053.dpr.pas (9,0 KB, 6x aufgerufen)
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat