Zitat von loshombreSchön Uli! Danke wie immer für die tolle Arbeit, aber diesmal muss ich wohl selber ran wegen dem G7. Ist aber kein Thema, weil ich doch so ne schöne deutsche Schraube von dir hab :wink: . Also ab in die Werkstatt!
Meine Rede. Egal mit welchem Bein Ulibär mal wieder aufgestanden ist, immer schön meine Hochachtung und ein Dankeschön für den Germanizer!
UliBär
Kann man das denn brauchbar messen? Was bleibt ist der subjektive Eindruck. LEIDER.
Etymotic
Nein, leider nicht. Ich erzähls mal lang, aber halt nur 1x.
Der erste Schritt ist, daß tete (und andere Builder) den eigenen handoptimierten Kode und den für sinnvoll gehaltenen anderer Builder austauscht. Danach wird das KOMPLETTE BUILD durch den Kompiler gejagt, damit aus dem Quelltext Dateien werden DAS ist die zweite Optimierung.
Die meisten benutzen den VisualC 7.1 von Kleinweich. Einige schon den VC8 (obwohl bis jetzt imho alle in der kostenlosen Express Version, der leider das wichtigste Feature -PROFILING- fehlt) und manche den Kompiler von Intel. Der von Intel macht Athlons aber künstlich langsamer, da es manche Optimierungen nur zuläßt, wenn es eine IntelCPU vorfindet.
Der Kleinweich VC7.1 (als Beispiel) optimiert also den Kode beim Kompilieren. Das kann man mit Schaltern/Optionen beeinflussen. Eine, die bissl auf die Prozessorarchitektur angeht, ist die Option -Gx. -G6 ist wie gesagt für K6/Athlon und P2/P3 gedacht. G7 für AthlonXP/Athlon64, P4 und Centrino. Mit G6 läuft die Soft auch auf allen späteren CPUs, holt aber nicht alles raus was geht.
***
Das Austauschen der beiden DLLs reicht also nicht, da das Build selbst -G6 bleibt.
***
Mit den DLLs ersetzt man die Originale - und IMHO von tete mit G6 oder G7 kompilierten - memutil.dll (Mozilla?) und msvcr71.dll (Kleinweich) - mit den handoptimierten und neu kompilierten von tete. Mit tmemutil.dll und tmsvcr71.dll. Mit TBind bringt man dem Build durch Patchen bei, auch diese zu benutzen ohne neu kompilieren zu müßen. Was tete dem Anwender auch nicht zumuten kann.
Den Builds selbst liegen die t-versionen schon ebenfalls bei, aber hier blick ich noch nicht wirklich durch :-?? Ich ersetz das immer mit den entsprechenden Einzelstücken bzw. den Betas die den Builds wohl eh nicht beiliegen.
Befehlssätze der Builds und DLLs:
Meine Empfehlung was die Streamingerweiterung angeht, wäre, generell die SSE und speziell die G7/SSE Version zu meiden. Es performt nach meinen wenigen Tests subjektiv schlechter als die MMX. Zweitens bringt es beim P3 nicht viel (G6/SSE), weil es noch nicht besonders viel kann uind das auch nicht besonders schnell.
Auf dem AthlonXP ist SSE generell langsamer als 3dnow, da viele SSE-Befehle mit 128bit Register arbeiten, AthlonXP aber nur 64bit breite Register dafür bereit hält. Die laufen dadurch auf dem AthlonXP auch noch bis zu 80% langsamer als auf sonst gleich schnellen Pentiums, auf welchen sie selten etwas bringen :wink:
Die Lutzi geht erst ab SSE2 ab. Das sind Centrino, P4, Core und alle Athlon64. Auf allen ist die Leistung mit SSE2 nicht zu beanstanden. Damit aber nicht gleich jeder den Durchblick hat, kann man die Streaming-Befehle auch mixen. Was man an den Namen der DLLs auch wunderbar sehen kann
Falls niemand Einwände hat, würde sich folgendes ergeben:
- K6-2 K6-3: G6/mmx, 3dnow
- Athlon/Duron: G6/mmx, 3dnow/K7
- AthlonXP/Sempron_SockelA: G7/mmx, 3dnow/K7
- Athlon64/Sempron_Sockel 754: G7/SSE2, SSE2/3dnow/K8
- P2: G6/mmx, mmx
- P3: G6/mmx/(mit SSE mal selbst antesten)
- P4: G7/SSE2, SEE2
- Centrino: G7/SSE2, SSE2
- Core: G7/SSE2, SEE2
MMX2 bzw. extended mmx macht imho keinen Sinn, da entsprechende Pentiums besser mit SSE2 und Athlons mit 3dnow performen.
Mit SSE3 - neuere P4 und neuere Athlon64 - bin ich mir ziemlich sicher, daß momentan erst der 'aktuellste' Intel-Kompiler da merkbare Ergebnise erzielt. Beim per Hand vorbereiteten Kode. Da der Kompiler aber Athlons benachteiligt und tete eh keinen Intel-Kompiler benutzt, würde ich das ebenfalls noch ne Weile sein lassen.
Ich hoffe ich konnte einiges erklären und wenn ich irgendwo falsch liege, hoffe ich bald dazu zu lernen