2009-07-10 4 views
2

J'utilise un graphique de type lineseries, mais il devient assez lent à ré-afficher quand j'ajoute un nouveau point lorsque le nombre total de points est de ~ 1200 points. Certes, cela fonctionne sur un PC assez lent (~ 600 MHz). Lire la documentation Flex sur la façon d'accélérer le rendu (désactiver les ombres, désactiver les données de filtre, etc ...) ne semble pas aider. J'ai lié mon tableau à un ArrayCollection (plutôt que le tableau que j'ai utilisé avant que j'ai mis à jour manuellement) et il ne semble pas être plus rapide. La documentation d'Adobe semble me faire croire que le graphique ne regarde que ce qui a changé depuis la dernière mise à jour, mais j'ajoute seulement un point! Si leur information est correcte, pourquoi est-ce que ça prend beaucoup plus de temps (5 secondes) pour mettre à jour un point quand j'ai 1200 points alors quand je n'ai que 2 points (instantané)?Comment accélérer le rendu des cartes dans Flex?

FYI - Lorsque j'ajoute un nouveau point à mon ArrayCollection, je dois faire un "AC.refresh()" pour que DataBinding prenne les nouvelles données. Des idées sur ce que je peux faire pour accélérer le processus?

+0

Avez-vous pensé à faire la moyenne des points pour afficher moins de points sur la grille, puis permettre à l'utilisateur de "zoomer" sur une section de la grille qui affichera plus de points? Comme regarder mois puis zoom sur les semaines dans un mois –

Répondre

1

Tout dessin avec 1200 points dans flash/flex va ralentir lorsqu'il est redessiné. Lorsque vous ajoutez un point supplémentaire, vous invalidez toute la série. Une fois le graphique invalidé, il se redessine à la prochaine opportunité disponible. Ce redraw sera lent. Pas moyen de contourner ça, j'ai peur. Mon point à vous est, pourquoi avez-vous besoin d'afficher 1200 points sur le graphique à un moment donné. Quiconque atteint ce tableau ne pourra pas prendre toutes ces informations. Si vous devez montrer la tendance de ces points, alors vous devez changer la conception pour qu'elle affiche des moyennes (selon le commentaire de Chris). Il existe également d'autres stratégies que vous pouvez utiliser. Si vous jetez un oeil à l'application Fiat Eco Drive, nous choisissons de ne montrer qu'une gamme maximale à la fois. Donc, même si nous pourrions avoir des centaines ou des milliers de points, nous n'en affichons qu'un certain nombre. Il y a beaucoup d'autres stratégies là-bas et vous devez vraiment revoir la conception de la carte, puis refactoriser la structure réelle du graphique.

+0

Ce que j'ai décidé de faire est plutôt que de représenter graphiquement toutes les valeurs, diviser mes données en «morceaux» de 2 minutes et graphique 2 points: la valeur maximale et la valeur minimale » tronçon". De cette façon, je peux toujours voir les pics et les creux dans mes données sans les perdre en raison de la moyenne. – Seidleroni

+0

une belle! Bon choix –

0

Le temps de rendu du graphique provient presque du rendu des séries, donc si vous changez simplement dataProvider et que vous gardez le nombre de séries, le graphique sera très bon dès la deuxième fois.

Questions connexes