Hallo,
@Amateruprofi,
kann es sein, dass die Assemblerversion in
http://www.delphipraxis.net/1156992-post45.html bei gleichen Feldern ein Feld zu wenig zählt.
@panthrax
Ich habe habe Deine Version #45 zu #51 mit while-Schleifen umgebaut, die zählt scheinbar richtig.
Anbei ein Testprogramm.
Bei -1 wird Testfeld gegen Testfeld getestet und die Schnittmenge sollte die gleiche Länge besitzen, was Pascal #19 und Assembler nicht tuen.
Bei 0 werden 12 Felder die jeweile eine Modifikation vom Testfeld sind miteinander "geschnitten"
Bei 1 werden 12 Felder die jeweile eine Modifikation vom VorgängerFeld sind miteinander "geschnitten"
Die Ausgabe in µsec bei meinem Rechner, aber es geht ja nur um relative Beziehung als Assembler ist ~doppelt so schnell wie Pascal #19.
Code:
Pascal #19:Pascal #39:Pascal #39p:Pascal #45:Pascal #51:Assem #35:
-1 -1: 470313: 388363: 475693: 371294: -1:
0 593633: 492619: 441995: 456582: 420622: 267954:
1 638382: 521710: 459289: 462909: 451294: 296262:
0 594878: 493216: 445630: 456969: 425607: 240649:
1 638515: 520117: 461448: 457467: 447657: 302612:
0 594142: 494672: 442169: 460931: 424432: 241258:
1 641827: 519991: 459252: -1: 449344: 298184:
0 594625: 492036: 441968: -1: 421176: 241215:
1 640879: 519695: 459175: 462514: 452662: 296423:
0 596518: 492056: 445751: 456175: 426792: 238062:
1 636715: 519495: 458919: -1: 452807: 301079:
0 597456: 494035: 442330: 456586: 420898: 236698:
1 643358: 520896: 462224: 458345: 449333: 294667:
Fertig.
Gruß Horst