Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-07-2004, 20:10   #1 (permalink)
aron ? da : weg
 
Benutzerbild von Aron
 
Registriert seit: Aug 2001
Ort: Berlin
Beiträge: 410
Array sortieren - Performance Problem

Ich habe mich gewundert, warum mein Game "stottert" mit zunehmender Spieldauer. Jetzt habe ich festgestellt, dass die Array-Sortiererei einfach zu langsam ist. Erschwerend kommt hinzu, dass ich FlashMX benutze und ein zweiter Array mitsortiert werden muss. Einen für die Punkte, einen für die Spielernamen ( hierzu habe ich die Funktion aus diesem Thread benutzt ). Der pointArray kann bis 150 Einträge haben.

Hat jemand eine Idee, wie ich die Sortierfunktion beschleunigen kann? Oder nutzt Ihr vielleicht einen anderen Ansatz (evtl. mit Objekten)?

Bin für jede Hilfe dankbar
Aron
Aron ist offline   Mit Zitat antworten
Alt 24-07-2004, 23:08   #2 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
hi,

ich glaube die sortierfunktion die die dort benutzen nennt sich bubble-sort.
ist nicht grad die schnellste. ausserdem glaub ich (habs mir jetzt nicht genau angeschaut), dass man die funktion noch verkuerzen koennte.

ansonsten such doch hier oder bei google einfach mal nach sortier algorithmen und versuch die nach AS zu portieren. ein stichwort dafuer ist z.b. "merge-sort", aber es gibt auch noch mehr.

und ich bin mir sicher, dass es alle algorithmen schon fuer AS gibt. musst sie nur finden .

ansonsten hast du dir schon mal die actionscript eigenen sortierfunktionen angeschaut?
die duerften ansich auch recht schnell sein.
die heissen glaub ich "Array.sort()" und "Array.sortOn()".
frag mich aber nicht, wie und was die genau machen.

ich hoffe, das hilft etwas.

gruss,
kenichi
__________________
Visit Amakiir.net - WoW Community and more!
kenichi ist offline   Mit Zitat antworten
Alt 24-07-2004, 23:20   #3 (permalink)
hmmmmm...
 
Benutzerbild von kenichi
 
Registriert seit: Feb 2004
Ort: deutschland
Beiträge: 112
den kannste ja mal versuchen...
http://proto.layer51.com/d.aspx?f=301
__________________
Visit Amakiir.net - WoW Community and more!
kenichi ist offline   Mit Zitat antworten
Alt 25-07-2004, 12:22   #4 (permalink)
aron ? da : weg
 
Benutzerbild von Aron
 
Registriert seit: Aug 2001
Ort: Berlin
Beiträge: 410
Die Flash-Interne Sortfunktion ist auch megalahm. Ist aber auch keine Wunder, die Schleifen müssen ja schließlich array.length² durchlaufen. Da hilft keine Optimierung, das dauert einfach. Der "Misch"-ansatz von dir ist nicht schlecht. So hab ich's gemacht.

Da nur ein Element hinzugefügt wird, ist es ja eigentlich garnich nötig, den ganzen Array neu zu sortieren. Es wird also nur überprüft, wann ein kleinerer Eintrag als der Neue in dem Array kommt. Hier wird dann der neue Eintrag eingefügt. Das selbe wird mit dem zweiten Array auch gemacht.

ActionScript:
  1. Array.prototype.addArrayElementInOrder = function(newElement,secondArray,secondValue){
  2.     var a = this;
  3.     var spliced = 0;
  4.     for(var i=0; i<a.length ; i++){
  5.         if(a[i] <= newElement){
  6.             a.splice(i, 0, newElement);
  7.             secondArray.splice(i, 0, secondValue);
  8.             spliced=1;
  9.             break;
  10.         }
  11.     }
  12.     if(spliced == 0){
  13.         a.push(newElement);
  14.         secondArray.push(secondValue);
  15.     }
  16. }
  17.  
  18. // Anwendung
  19. a = [15,10,10];
  20. b = ["Aron", "Bron", "Cron"];
  21.  
  22. a.addArrayElementInOrder(25,b,"Dron");
  23. trace(a);
  24. trace(b);
  25.  
  26. a.addArrayElementInOrder(10,b,"Eron");
  27. trace(a);
  28. trace(b);

Danke
Aron
Aron ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele