| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| °.oO°O.o°.oO.o°O Registriert seit: Jun 2005 Ort: CH
Beiträge: 1.490
| Performance-Optimierung
Hi zusammen Ich habs tatsächlich geschafft und über die Festtage mal ein bisschen in Moock's Essential AS2.0 reingelesen. Dabei ist mir aufgefallen, dass er bei Schleifen häufig ein Konstrukt in dieser Art verwendet: ActionScript:
), habe ich begonnen, mich zu fragen, wieviel Performanceunterschied hier wohl zu einer "normalen" for-Schleife oder einer while-Schleife besteht. Mein nächster Schritt bestand dann darin, hier im Forum mal nach Optimierung und Performance zu suchen - und leider nur Threads zu vereinzelten Themen zu finden, aber nix, was alles schön zusammenträgt. Mir ist durchaus bewusst, dass Optimierungen (bei gut geschriebenem oder besonders hässlichem Code) in den seltensten Fällen wirklich merkbare Performanceverbesserungen bringt (und die ganze Sache Optimierungs-Sache unter Umständen als "sinnlos" betrachtet werden kann). Trotzdem würde mich interessieren, wie bzw. mit was alle möglichen solchen Verbesserung erreicht werden können?Hat vielleicht jemand nen guten Link, den ich nicht gefunden habe oder möchte jemand ein paar Beispiele machen, die (vielleicht nicht nur für mich?) interessant sind?
__________________ There is no way to happiness, happiness is the way! - Buddha |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.147
| Sowas ist schwer zu sagen. Vor allen Dingen wenn man den Kontext des Codes nicht kennt. Manchmal hat das auch rein pragmatische Gründe oder Schleifen müssen gar so aufgebaut werden. Zu alten ActionScript 1 Zeiten war es beispielsweise performanter ähnliche Konstrukte zu verwenden, da eine Typprüfung zwischen Number und String bei + oder += Operatoren zur Laufzeit durchgeführt wurden. Programmiert nach Actionscript 2 mit entsprechenenden Konventionen entfallen diese Prüfungen aber schon von vorne rein.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Moock umgeht damit, dass einmal pro Schleifendurchlauf die array-Länge abgeprüft wird, was ja auch in der Flash-Hilfe als zu vermeiden beschrieben wird. Auf alle Fälle cool, hab ich so auch noch nicht gesehn. Ich hab immer Mühsam Konstrukte wie PHP-Code:
__________________ we will stop enhancing the truth in 3, 2, ... |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
|
mich würd mla interessieren ob be einem 1D-Array ein while-Durchlauf schneller ist? also ich mache seit neustem es immer so auch beim zuweisen: ActionScript:
anstatt des mühsamens for.
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
| | #5 (permalink) | |
| l2l|c4o Registriert seit: Nov 2005 Ort: düstere Grotte im Süden
Beiträge: 968
| Zitat:
was ich mich gerade frage ist es nicht Jacke wie Hose ob ich nun in jeder durchlauf i checke oder ob ich immer decrement i >0 überprüfe das muß schon auch jedesmal gecheckt werden. Wie schon gesagt das muß man immer im context mit der funktion betrachten Ich konnte da aufjedenfall auch noch keinen Performance unteschied feststellen Geändert von Sir Freako (04-01-2008 um 19:29 Uhr) | |
| | |
| | #6 (permalink) |
| DeRailed Registriert seit: Sep 2006
Beiträge: 321
|
Ich habe vor einiger Zeit die verschiedenen Möglichkeiten, Schleifen zu programmieren, gegeneinander antreten lassen (AS2!), weil es in einem speizellen Fall auf das letzte Quäntchen Geschwindigkeit ankam. Es ergaben sich Unterschiede im einstelligen Prozentbereich. Die detaillierten Ergebnisse habe ich unten als Tabelle angehängt. Jedenfalls war diese Variante, über ein Array zu iterieren, am schnellsten: ActionScript:
Allerdings findet in dieser Schleife nur ein Zugriff auf das Element statt. Ich könnte mir vorstellen, dass die zweitplazierte Variante bei mehreren Zugriffen schneller ist: ActionScript:
Gegen diese Variante habe ich jetzt noch die Version von Moock antreten lassen. Sie war um ca. 2% langsamer. Jedenfalls sind die Unterschiede in der Praxis wohl nur äußerst selten relevant. Wenn jemand gerade zu viel Zeit hat, dann könnte er ja die Versuche für AS3 wiederholen, da gibt es ja doch mehr performancekritische Anwendungen als bei AS2. Allerdings könnten da natürlich auch die Schleifen so gut optimiert sein, dass die reine Schleifenlaufzeit überhaupt nicht mehr ins Gewicht fällt. Daher die Moral von der Geschicht': Um Schleifenoptimierung sorg' dich nicht.
__________________ Zum Thema Code im Forum posten: Mit den [AS]-Tags bekommt man eine tolle farbige Anzeige, bei der sogar die Zeilennummern eingetragen sind. Wie man aus [AS]-Tags Code direkt ohne die Zeilennummern kopiert: Einfach auf den 'Beitrag zitieren'-Knopf drücken und Spaß mit Copy&Paste haben ;) |
| | |
| | #7 (permalink) |
| Crème brûlée Registriert seit: Jan 2006 Ort: Düsseldorf
Beiträge: 719
|
Zum Thema AS3 habe ich erfahren (aber noch nicht getestet), dass diese Variante am schnellsten ist: PHP-Code:
|
| | |
| | #8 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
|
++i statt i+=1 muss das heißen. i+=1 ist sogar viel schlimmer als i++, da 1 in dem Fall erst eine Number ist, die zu int konvertiert wird und dann addiert wird. Oder auch möglich: Die Addition findet mit zwei Number Typen statt und dann wird das zu int konvertiert. Beide Fälle willst du nicht |
| | |
| | #10 (permalink) |
| DeRailed Registriert seit: Sep 2006
Beiträge: 321
| Da fehlt aber einiges...
__________________ Zum Thema Code im Forum posten: Mit den [AS]-Tags bekommt man eine tolle farbige Anzeige, bei der sogar die Zeilennummern eingetragen sind. Wie man aus [AS]-Tags Code direkt ohne die Zeilennummern kopiert: Einfach auf den 'Beitrag zitieren'-Knopf drücken und Spaß mit Copy&Paste haben ;) |
| | |
| | #13 (permalink) |
| DeRailed Registriert seit: Sep 2006
Beiträge: 321
| Eine Menge Blog- und Foren-Autoren sind zu dem Ergebnis gekommen, dass uint im Regelfall um einiges langsamer als int ist. Allerdings kann sich daran mit den neuen Flash Player-Versionen auch etwas geändert haben, die meisten Tests sind schon mehr als ein Jahr alt.
__________________ Zum Thema Code im Forum posten: Mit den [AS]-Tags bekommt man eine tolle farbige Anzeige, bei der sogar die Zeilennummern eingetragen sind. Wie man aus [AS]-Tags Code direkt ohne die Zeilennummern kopiert: Einfach auf den 'Beitrag zitieren'-Knopf drücken und Spaß mit Copy&Paste haben ;) |
| | |
| | #14 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
|
Nein. Das ist eine Compiler Frage. Und ich kann sie auch gern beantworten. uint ist ein GRAUS, weil(!) es gibt in Flash keine unsigned Datentypen (Java lässt grüßen) und der uint ist nur eine Number ohne den Floating Point Part quasi. Bei jeder Berechnung mit einem uint wird der uint erst zu einer Number konvertiert, dann Number-technisch addiert und dann zu einem uint wieder konvertiert. Das steht auch genauso im Bytecode. Daher uint gleich wieder vergessen |
| | |
| | #15 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.147
| Witzig. Danke für die Info.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |