Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

31

08.11.2010, 15:18

Ja ist es, auch auf einem Core i7 braucht eine signed-integer-Multiplikation noch 3x so lange wie eine Addition. Quelle

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

32

08.11.2010, 16:09

Also 2 Takte länger, unter der Annahme, dass das Zwischenspeichern der Summe keinen Takt braucht und die Verwendung des zusätzlichen Registers keine Ram-Speicherung anderer Variablen erzwingt. Wow, also das sollte das gesamte Programm natürlich erheblich beschleunigen ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

33

08.11.2010, 16:13

ja klar ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

34

08.11.2010, 16:16

dauert modulo nicht noch länger als eine multiplikation?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

35

08.11.2010, 16:18

Das ist in diesem Fall unerheblich, da der CPU-Befehl für Modulo exakt der gleiche ist wie für die Division. Und beide Algorithmen verwenden ihn.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

36

08.11.2010, 16:24

Es ist sowieso unerheblich, erstmal weil der Unterschied in seinem Programm vermutlich eh keine Rolle spielt und weiters weil der Compiler (MSVC10 optimierend) für beide Varianten den exakt gleichen Maschinencode produziert (der übrigens komplett ohne Division auskommt) ;)

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

37

08.11.2010, 16:26

Sicher? Ich bin mir nicht sicher, aber ich habe das gefühl, dass viele die Optimierungsmöglichkeiten des Compilers stark überschätzen, da per hand optimierte Codes oft wesentlich kleinere Outputs generieren...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

38

08.11.2010, 16:26

@dot: Oh, wie das? Jetzt bin ich neugierig.

@CBenni::O: Die heutigen Compiler sind wirklich deutlich besser als damals ;) Kleinere Outputs sind auch nicht immer die schnellsten. Leider.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

39

08.11.2010, 16:32

Sicher? Ich bin mir nicht sicher, aber ich habe das gefühl, dass viele die Optimierungsmöglichkeiten des Compilers stark überschätzen, da per hand optimierte Codes oft wesentlich kleinere Outputs generieren...

Mein Erfahrung lehrt mich eher dass die meisten dazu tendieren die Optimierungsfähigkeiten des Compilers stark zu unterschätzen...


Bitteschön (MSVC10 mit /O2 /Ot):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  // Variante A

  int a = x + 25;
mov         ecx,dword ptr [x]  
add         ecx,19h  
  return a - a % 50;
mov         eax,51EB851Fh  
imul        ecx  
sar         edx,4  
mov         eax,edx  
shr         eax,1Fh  
add         eax,edx  
imul        eax,eax,32h


  // Variante B

  return (x + 25) / 50 * 50;
mov         ecx,dword ptr [x]  
add         ecx,19h  
mov         eax,51EB851Fh  
imul        ecx  
sar         edx,4  
mov         eax,edx  
shr         eax,1Fh  
add         eax,edx  
imul        eax,eax,32h

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

40

08.11.2010, 16:36

Shit, haha, das is ja genial.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige