-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
Ich danke erstmal allen hier.
Vermutlich werde ich es so machen, dass ich alle Verwaltungsaufgaben der KI über Delphi erledige und komplexere Berechnungen C/C++ überlasse.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
1. Für C++ habe ich Visual C++ 2010 Express verwendet. Ahnung habe ich aber nicht, welche Optimierungen da vorgenommen werden.
2. Thema Multithreading: Nehmen wir an, es ist ein QuadCore, ich erstelle 4 Threads und es gibt 4 KI-Objekte. Jedes Objekt läuft auf einem separaten Kern. Jetzt wird, auch angenommen, ständig in jedem Objekt ein Vektor normalisiert. Die vier Threads laufen über...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@alle: Damit jetzt alle drei Sprachen abgedeckt wurden, hier noch der C#-Code. Die benötigte Zeit hierfür beträgt 2,9 Sekunden.
public struct TVector
{
public float x;
public float y;
public float z;
}
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
Mit dem nachfolgenden C++-Code sind es 0,8 Sekunden.
TVector normalisieren(TVector AVector)
{
float len = sqrt(AVector.x*AVector.x+AVector.y*AVector.y+AVector.z*AVector.z);
AVector.x = AVector.x / len;
AVector.y = AVector.y / len;
AVector.z = AVector.z / len;
return AVector;
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@jfheins: Gerne doch.
void calcCSharp()
{
for (int i = 0; i < (100000000 - 1); i++)
{
float vecX = 5.7458F;
float vecY = 3.758F;
float vecZ = 7.12544F;
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@General: Gerade probiert. Jetzt braucht Delphi 1,9 Sekunden.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@Sir Rufo: Ich hatte einen ähnlichen Gedanken. Möglicherweise erkennt der CPP-Compiler, dass in der Funktion eh immer die gleichen Werte berechnet werden und ruft die Funktion halt nur 1x auf, statt die ganze Schleife komplett durchzulaufen.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@General:
Habe ich schon gemacht. In CPP wurde nur die reine Funktion implementiert und in Delphi x-mal aufgerufen. Das Ergebnis war, dass die benötigte Zeit in Delphi von 0,5 Sekunden auf 0,2 Sekunden sank.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
procedure calcDelphi();
var vecX, vecY, vecZ, len, normX, normY, normZ:single;
i:integer;
Begin
for i:=0 to 100000000 - 1 do
Begin
vecX:= 5.7458;
vecY:= 3.758;
vecZ:= 7.12544;
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
Wobei mich ja genau das interessiert. Die Funktion in C/C++ sieht so aus:
__declspec(dllexport) int calcCPP(void)
{
int sum = 0;
for (int i = 0; i < (100000000 - 1); i++)
{
float vecX = 5.7458F;
float vecY = 3.758F;
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@Medium:
Mit CUDA binde ich mich leider an nVidia. Für ein Spiel ist das nicht sinnvoll. OpenCL hingegen klingt ganz gut.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
@Günther
Wie gesagt, die reine Verwaltung mache ich lieber in Delphi. Nur den Mathe-Kram würde ich gerne wegen der Geschwindigkeit auslagern.
@General
Inline Assembler kann ich nicht nutzen, da der 64bit-Delphi-Compiler sowas nicht kann. (Delphi XE3)
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Gargamel,
26. Mär 2013
Hi
Die Tage habe ich die Geschwindigkeit von C#, Delphi und C++ getestet. Dazu habe ich in einer 10-Mio.-For-Schleife einen Vektor normalisiert. Dabei kam heraus, dass C# dafür 1,5 Sekunden benötigt. Delphi 0,5 Sekunden und C++ irgendwas um 0,003 Sekunden. Dass C# am langsamsten ist, dachte ich mir fast. Aber der Unterschied zwischen Delphi und C++ ist arg groß. Da ich nun für meine KI jeden...