Re: Jammer-Thread
Verfasst: 30.08.2012, 22:09
Oder in dem Fall überhaupt einfach auto ;)Schrompf hat geschrieben:Es ist nie zu spät, aber selten zu früh, die Freuden von size_t und SIZE_MAX kennen zu lernen.
Oder in dem Fall überhaupt einfach auto ;)Schrompf hat geschrieben:Es ist nie zu spät, aber selten zu früh, die Freuden von size_t und SIZE_MAX kennen zu lernen.
Code: Alles auswählen
cvtsi2ss xmm1,ebx
cvtss2sd xmm0,xmm0
cvtps2pd xmm1,xmm1
mulsd xmm0,xmm3
mulsd xmm1,xmm3
cvtsd2ss xmm0,xmm0
cvtpd2ps xmm1,xmm1
movss dword ptr [esp+1B0h],xmm0
movss dword ptr [esp+1B4h],xmm1
movq xmm4,mmword ptr [esp+1B0h]
movq mmword ptr [esp+23Ch],xmm4
movss xmm4,dword ptr [ecx+1AD0h]
cvtps2pd xmm4,xmm4
cvtss2sd xmm0,xmm0
addsd xmm4,xmm0
add edi,eax
sub edi,edx
cvtsi2ss xmm2,edi
xorps xmm0,xmm0
cvtpd2ps xmm0,xmm4
movss xmm4,dword ptr [ecx+1AD4h]
cvtps2pd xmm4,xmm4
cvtps2pd xmm2,xmm2
cvtss2sd xmm1,xmm1
addsd xmm4,xmm1
mulsd xmm2,xmm3
cvtpd2ps xmm2,xmm2
movss dword ptr [esp+1B8h],xmm2
mov edx,dword ptr [esp+1B8h]
xorps xmm1,xmm1
cvtpd2ps xmm1,xmm4
movss xmm4,dword ptr [ecx+1AD8h]
cvtps2pd xmm4,xmm4
cvtss2sd xmm2,xmm2
addsd xmm4,xmm2
cvtps2pd xmm6,xmm0
mov dword ptr [esp+244h],edx
cvtpd2ps xmm2,xmm4
cvtps2pd xmm4,xmm1
mulsd xmm4,xmm5
movss xmm5,dword ptr [esp+60h]
cvtps2pd xmm5,xmm5
mulsd xmm5,xmm6
movss xmm6,dword ptr [esp+78h]
addsd xmm4,xmm5
cvtps2pd xmm6,xmm6
cvtps2pd xmm5,xmm2
mulsd xmm5,xmm6
movss xmm6,dword ptr [esp+84h]
cvtps2pd xmm6,xmm6
addsd xmm5,xmm6
addsd xmm4,xmm5
movss xmm6,dword ptr [esp+70h]
cvtps2pd xmm5,xmm1
cvtps2pd xmm7,xmm0
cvtps2pd xmm6,xmm6
mulsd xmm5,xmm6
movss xmm6,dword ptr [esp+64h]
cvtps2pd xmm6,xmm6
mulsd xmm6,xmm7
movss xmm7,dword ptr [esp+7Ch]
addsd xmm5,xmm6
cvtps2pd xmm0,xmm0
cvtps2pd xmm7,xmm7
cvtps2pd xmm1,xmm1
cvtps2pd xmm6,xmm2
mulsd xmm6,xmm7
movss xmm7,dword ptr [esp+88h]
cvtps2pd xmm7,xmm7
addsd xmm6,xmm7
addsd xmm5,xmm6
cvtpd2ps xmm5,xmm5
movss dword ptr [esp+24Ch],xmm5
movss xmm5,dword ptr [esp+74h]
cvtps2pd xmm5,xmm5
mulsd xmm1,xmm5
movss xmm5,dword ptr [esp+68h]
cvtps2pd xmm5,xmm5
mulsd xmm5,xmm0
cvtps2pd xmm0,xmm2
movss xmm2,dword ptr [esp+80h]
cvtps2pd xmm2,xmm2
mulsd xmm0,xmm2
movss xmm2,dword ptr [esp+8Ch]
cvtps2pd xmm2,xmm2
addsd xmm0,xmm2
addsd xmm1,xmm5 Hast du konkrete Punkte, die dich stören? Bevor ich verstanden habe wie die Lib funktioniert, habe ich nämlich ähnlich gedacht ;)CodingCat hat geschrieben:C++' iostream-API ist eine absolute Frechheit. Sowohl weil sie zeigt, wie man Vererbung NICHT benutzt, als auch, weil sie nur aus einem riesigen unsortierten Haufen kryptischer Abkürzungen besteht. Davon abgeshen ist sie gnadenlos over-engineered (Wie war das mit EINER Aufgabe pro Klasse?), weshalb sie obendrein auch noch gnadenlos verfettet und ineffizient ist.
Oha...Artificial Mind hat geschrieben:http://io9.com/5940036/how-copyright-en ... ugo-awards
Willkommen in einer dystopischen Realität ...
Machen die ja nicht mal. Die schreiben nur Code. Uebel :twisted:Jörg hat geschrieben:Kannst denen ja mal zum Dank eine Schaltung entwerfen ;)
Das geile ist: Die allersete Programmierpsrache, in der ich entwickelt habe, war damals TI-Basic, ein von der Syntax Basic recht nahe Interpretersprache für grafische Taschenrechner. Der Speicherplatz auf den Geräten war knapp und alle Programme wurden bei jedem Run komplett aus dem Source interpretiert, jeder Kommentar hat also den Bedarf an äußerst knappem Endbenutzer"-festplattenplatz" (ok, eigentlich ein Flashspeichership, aber eben als Dauerspeicher genutzt) erhöht. Um möglichst viele möglichst umfangreiche Games dort unterzubringen habe ich aberweitzige Codesizeoptimierungen betrieben und Spiele von 20k Sourcecode auf 5k optimiert. Das beliebteste nake auf dem System hatte, bevor ich mich daran gemacht habe, ca. 2k Code, nach meinen Optimierungen unter 200Bytes ohne Funktionseinbußen und lief dann auch doppelt so schnell. Null Kommentare und alle Variablennamen auf einzelne Buchstaben umbennen waren da noch die harmloseren Geschichten.eXile hat geschrieben:Das ist schön zu hören. :) Hast du dir neue Minimax-Polynome gebastelt, um die höhere Genauigkeit (in Vergleich zu float) zu nutzen?Krishty hat geschrieben:Eben angepackt (allerdings mit unsigned (normalized) int). Wie gut sich das anfühlt … den Quadranten eines Winkels für die eigenen trigonometrischen Funktionen bestimmen? Bloß die oberen Bits abfragen!Naja, genau da. Und zwar sowohl beim SLERP mit Quaternionen wie auch der Konvexkombination von Quaternionen. Ich wollte eher davor warnen, im Bereich der Quaternionen auch nur in irgendeiner Weise mit Winkeln zu rechnen, genauso wenig wie man im Bereich der Rotationsmatrizen niemals plötzlich anfangen sollte, mit Winkeln zu rechnen.Krishty hat geschrieben:Wo genau, außer bei Quaternion-Interpolation, ist das von Nutzen?Du hast noch nie Code von Mathematikern gesehen. Ich sage nur: Jeder Variablenname ist maximal zwei Buchstaben lang. AAAAAAAAA!glassbear hat geschrieben:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH. :twisted:
Code: Alles auswählen
virtual virtual static static static void init();Die Standard-IO-Bibliothek ist zwar in der MSVC-Implementierung tatsächlich alles andere als optimal, aber du schließt hier doch etwas vorschnell.RazorX hat geschrieben:Bin mal wieder schockiert wie langsam die std Streams in Punkto Parsen sind. Habe für meine Projektarbeit einen .OBJ loader (nicht optimiert natürlich) geschrieben und mir das Sponza Modell ausgesucht.
[..]
Dann hab ich das ganze mal in ein binäres Zwischenformat gespeichert, sodass ich nur noch dieses Format laden muss anstelle des ganzen parsens.
[..]
Ich mein ich kann mit meiner Lösung durchaus leben, finde es aber doch enorm heftig wie viel Zeit bei den StringStreams drauf geht.
Das ein binäres Format immer schneller ist, hab ich gar nicht angezweifelt und war gar nicht der Punkt. Ich bin letztlich ja auch nur auf binäres Zwischenformat umgestiegen, da try&error im Debug-Modus nicht mehr durchführbar war bei solchen Ladezeiten.CodingCat hat geschrieben:Die Standard-IO-Bibliothek ist zwar in der MSVC-Implementierung tatsächlich alles andere als optimal, aber du schließt hier doch etwas vorschnell.
Ein binäres Format wird IMMER schneller sein, selbst wenn du das gesamte IO optimal hinkriegst. Das liegt schon alleine daran, dass das ganze Parsen von Zahlen und Vergleichen von Strings grundsätzlich ein Vielfaches mehr Aufwand ist, als einfach nur Bytes einzulesen.
Ich hatte die StringStreams vorallem der Lesbarkeit des Codes wegen genommen, da so das zeilenorientierte Parsen imho wesentlich überschaubarer wird. Hab es gerade mal auf reines fstream umgeschrieben, wahnsinnig schnell ist es zwar immer noch nicht, aber ein guter Schub von knapp ~30% im Release.CodingCat hat geschrieben:Obendrein redest du von stringstreams. Die Standard-Bibliothek ist immerhin so entworfen, dass man direkt aus Dateien genauso wie aus stringstreams lesen kann, das heißt du kannst dir hier schonmal einen gigantischen Batzen Kopiererei und Speicherallokationen sparen.
Also Max Payne macht mir auf Android sehr viel Spaß. Kann man jetzt nicht als Farmville Spiel bezeichnen ;)ich will kein Farmville spielen, sondern etwas vernuenftige Haltung unterwegs
Hehe, ich haette das konkretisieren sollen: Ich will keine Shooter aufm Handy spielen. Das funktioniert nicht, ich bin zu langsam fuer sowas. Und fuer die meisten Hack&Slays auf dem Handy auch :lol: Zumal die nachgemachten "Gamepads" alle irgendwie doof sind. Viel zu klein und mit dem Fingern aufm Display seh ich dann kaum noch was vom Spiel selber :lol:Jeason hat geschrieben:Also Max Payne macht mir auf Android sehr viel Spaß. Kann man jetzt nicht als Farmville Spiel bezeichnen ;)ich will kein Farmville spielen, sondern etwas vernuenftige Haltung unterwegs
eXile hat geschrieben: [...]Wenn ich von meiner BA-Erfahrung auf andere schließen darf, bedeutet das Alarmstufe Rot, lange Nächte und ganz sicherlich keinen Blur für euch in der nächsten Woche.[...]