Henk: Arrays in FF beschleunigen

Hi,

größere Arrays wie man sie zum Beispiel für die Tracklinien in GoogleMaps nutzen kann, sind im FireFox schrecklich langsam. Gibt es einen Weg die Erzeugung des Arrays zu beschleunigen? Es geht mitr speziell um sowas:

map.addOverlay(new GPolyline(arr,nowcolor,nowwidth,1));

wobei arr erzeugt werden kann durch

var arr=[
new GLatLng(lat1, lon1),
new GLatLng(lat2, lon2),
etc.
];

oder durch

var arr = new Array(cpoint);
for (i=0; i<cpoint; i++)
 arr[i] = new GLatLng(nowTrack[2*i+0],nowTrack[2*i+1]);

Beides ist sehr langsam. Gibt es einen besseren Weg?

Gruß und Danke
Hekn

  1. Hi,

    größere Arrays wie man sie zum Beispiel für die Tracklinien in GoogleMaps nutzen kann, sind im FireFox schrecklich langsam.

    bist Du sicher, dass es an den Arrays hängt und nicht an den GLatLng-Objekten?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. größere Arrays wie man sie zum Beispiel für die Tracklinien in GoogleMaps nutzen kann, sind im FireFox schrecklich langsam.

      bist Du sicher, dass es an den Arrays hängt und nicht an den GLatLng-Objekten?

      Arrays *sind* sehr langsam, auch wenn sie nur einfache Zahlen und keine komplizierten Objekte enthalten. Das Phänomen ist mir [link=http://forum.de.selfhtml.org/?t=158543&m=1035677@title=hier] schon unangenehm aufgefallen. Ob es an FF liegt oder allgemein an JavaScript, kann ich aber nicht sagen.

      Gruß, Don P

      1. Hallo donp,

        Arrays *sind* sehr langsam, ...

        das gilt in allen (mir bekannten) Programmiersprachen. Daher sollte man innerhalb von Schleifen alles mit "." und "[]" in normale Variablen umspeichern, wenn es häufiger benutzt wird.

        Aber Henks Problem liegt nicht an den Arrays, die er kaum vermeiden kann, sondern an der Google Maps API, die bei zu langen Polylines manche Browser einfrieren lässt. Zumindestens bei mir war es so.

        Gruß, Jürgen

    2. bist Du sicher, dass es an den Arrays hängt und nicht an den GLatLng-Objekten?

      Arrays *sind* sehr langsam in FF, auch wenn sie nur einfache Zahlen und keine komplizierten Objekte enthalten. Das Phänomen ist mir hier schon unangenehm aufgefallen.

      Ein weiterer Test im IE hat jetzt ergeben, dass es tatsächlich an FF liegt: Von zwei Funktionen, die dasselbe Ergebnis liefern, aber unterschiedlich implementiert sind, läuft eine im FF schneller und die andere im IE.
      Die im FF viel langsamere Funktion (braucht doppelt so lange wie die andere) macht viele Zugriffe auf numerische Werte eines kleinen (!) Arrays (weniger als 20 Elemente). Sie ist aber im IE um die Hälfte schneller als andere, rekursive Lösung mit mehr Stringkonvertierungen.

      Ich fürchte, damit muss man vorerst im FF leben. Arrays grundsätzlich vermeiden kann ja auch nicht die Lösung sein...

      Gruß, Don P

  2. Hallo Henk,

    map.addOverlay(new GPolyline(arr,nowcolor,nowwidth,1));

    bei zu langen Polylines hängen sich diverse Browser auf. Versuch mal

    http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/

    Gruß, Jürgen