Autor |
Beitrag |
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 14:22
Was ist von der Performance her besser für den Prozessor not (x=y) oder x<>y? Oder hängt es vom Prozessor ab? Oder wandelt Delphi das zum gleichem um?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 23.09.05 14:41
Moin!
Würde sagen, dass hängt vom Datentyp ab. Bei Integern sollte das IMHO egal sein, läuft auf ein CMP und ein JPx hinaus.
cu
Narses
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 14:45
Narses hat folgendes geschrieben: | Moin!
Würde sagen, dass hängt vom Datentyp ab. Bei Integern sollte das IMHO egal sein, läuft auf ein CMP und ein JPx hinaus.
cu
Narses |
Was ist CMP und JPx?
@Datentyp ist meistens Integer  .
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Fr 23.09.05 14:47
Das ist Assembler also CPU Code.
Ich denke auch das der Compiler so intelligent ist und beides gleich interpretiert.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 23.09.05 14:50
Wieso probierst du's nicht einfach aus? In einer Schleife 10 Mio. mal (oder evtl. öfter) zwei Zufallszahlen vergleichen und schauen, welche der beiden Methoden schneller ist...
AXMD
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Fr 23.09.05 14:51
Hallo,
schau Dir das Assemblerlisting an.
mittels F5 oder Mausklick auf die Zeilennummer (mit blauen Punkt sind die kompilierten Zeilen nach Strg+F9 angezeigt)wird eine Haltestelle eingefuegt.(roter Punkt)
Programm starten .
Das Prgramm wird dann, wenn es diesen Codseabschnitt erreicht hat, anhalten.
Dann in Delphi Ansicht->Debugfenster->CPU (STRTG-ALT-C (ist bei mir Hotkey ATI Einstellungen)
Ergebnis es wird beides als
CMP ?,???
Jz vorbei;
...Then Abschnitt;
vorbei:
uebersetzt.
Und was hilft uns das??
Gruss Horst
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Fr 23.09.05 14:53
beides das selbe.
aber wofür brauchst du das, und kann man sowas nicht selber testen?
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 15:03
Ich bin dabei mit Delphi gegen einen c - und einen c++ -Programmier um Performance zu kämpfen und da versucht man nat. jedes bisschen noch herauszukitzeln.
@Asm-Code: Ich kenne mich nicht mit Assembler aus, wodurch ich das CPU-Fenster nie nehme  .
@Testen: Auf meinem müsste ich schon ziemlich viele durchläufe laufen lassen und da die CPU-Last schwankt würde es vlt. auch bei mehreren durchläufen nicht das richtige Ergebnis rauskommen. Und es kann ja Prozessorabhängig sein, wenn der ASM-Code unterschiedlich ist  .
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 23.09.05 15:12
Du willst jedes bisschen herauskitzeln und kannst kein Assembler? Sorry, aber das ist irgendwie widersprüchlich...
AXMD
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 15:36
Ne ist kein Widerspruch. Ich will jedes bisschen Performance herausholen, was Delphi mit seinen Befehlen anbietet. Das ich mit ASM schneller sein kann als die c programmierer ist mit klar, da man einige "Kanten" wegnehemn kann  .
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Fr 23.09.05 19:43
Der Wettbewerb ist eigentlich überflüssig, da sich die einzelnen Compiler bzw. das Compilat nicht viel nehmen. Das wurde in der Vergangenheit schon mehrfach bewiesen. c't hatte vor ein oder zwei Jahren einen Vergleich, bei dem mal C, mal Delphi marginal besser wegkam. Selbst mit ASM kann man i.A. nicht viel rausholen, ausser, man benutzt individuelle Tricks, die kein Compiler beherrscht, da sie eine gehörige Portion Erfahrung voraussetzen.
Deine Frage ist nicht einfach zu beantworten: Wenn das Not(a=b) isoliert vorkommt (...If Not (a=b)...), ist das ERgebnis u.U. ganz anders, als wenn der Ausdruck Teil eines komplexeren Ausdruckes ist. Da hilft wirklich nur testen, testen, testen.
Aber wenn Ihr sonst nichts zu tun habt... Mach doch mal einen neuen Thread auf und bitte um Tipps zur performanten Codierung. Oder, wenn Du mit deinen Freunden ein konkretes Wettbewerbsprojekt macht, helfen wir Dir gerne. Wir werden als Forum doch ein paar C++Grünschnäbeln die Butter vom Brot nehmen können, oder?
_________________ Na denn, dann. Bis dann, denn.
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 23.09.05 19:53
Ich kann ja mal einen Thread dazu aufmachen, wenn ich alles was ich schon verbessern kann verbessert habe  . Die Unterschiede zw. den Programm sind nicht mehr alzu groß, allerdings sind es 2 verschiedene Plattformen auf den wir testen, da der eine für Linux entwickelt, der andere für Mac (beide testen es aber auf Mac) und ich auf Windows  . Allerdings auf einen 3,2er, während die das auf einem 1,3er machen  .
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 23.09.05 20:18
Ich bevorzuge immer not (X = Y). Finde ich auch übersichtlicher.
Ob es schneller ist, sei mal dahingestellt.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|