|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre du Club
![]() |
Bonjour à tous,
Je suis en train de développer une application ASP.net C# qui lit un fichier TXT en ligne, qui contient des coordonnées GPS sur chaque ligne. Je le converti ensuite en une chaîne encodée Polyline Google pour afficher le tracé GPS sur une carte Google Map. Ca fonctionne à merveille pour des petits fichiers (100/200 lignes), mais le temps de réponse augmente avec les lignes, et je ne peux pas lire de gros fichiers... comment faire ? Le message d'erreur du serveur : Citation:
__________________
Vive Visual Studio.net !!! |
|
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Bonjour,
Avoir le code que tu utilises permettrait peut être de t'aider à voir pourquoi cela devient lent. Ensuite, peut être que paralléliser les calculs permettraient de diminuer les temps de réponse |
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() |
Code :
__________________
Vive Visual Studio.net !!! |
||
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Quelle est la partie qui prend du temps ? Est-ce l'appel à l'API Google (GoogleAPI.EncodeCoordinates(Liste)) ? Ou est-ce la constitution de la liste ?
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() |
C'est la constitution de la liste (2500 passages dans le While).
__________________
Vive Visual Studio.net !!! |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Je ne vois pourtant rien qui expliquerait cela. Peut être que le StreamReader est lent à l'utilisation !
Si éventuellement tu as la possibilité de mettre à disposition un petit fichier d'exemple pour faire quelques tests... |
|
00
|
|
|
#7 |
|
Membre du Club
![]() |
__________________
Vive Visual Studio.net !!! |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Merci,
Je viens de tester, en remplaçant les GoogleAPI.Coordinate par des System.Drawing.PointF, et c'est instantanné ! Et la liste finale contient plus de 8000 éléments. Donc comme ça, je ne vois pas d'où vient le problème que tu rencontres, si ce n'est que ce n'est pas a priori un problème lié au parsing du fichier. |
|
00
|
|
|
#9 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Les ralentissements sont peut être dus à l'API Google (je pense notamment à GoogleApi.Coordinate). Est-ce qu'elles sont disponibles gratuitement ? Je n'ai pas réussi à les trouver sur le net (je ne trouve que des API javascripts).
Car peut être que l'assignation de la longitude et/ou latitude nécessite des calculs qui peuvent expliquer tes timeouts... |
|
00
|
|
|
#10 |
|
Membre du Club
![]() |
C'est étrange... je viens aussi d'essayer en local, et c'est pareil c'est instantané. Dès que je publie ca en ligne, ca rame et donc ca plante... même avec ta technique du PointF. Une idée ?
__________________
Vive Visual Studio.net !!! |
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
La seule idée qui me vient pour le moment, c'est que ton fichier n'est pas sur un disque local mais un disque réseau.
Sinon, c'est que la dernière ligne (scriptString = GoogleAPI.EncodeCoordinates(Liste)) où doit se cacher un appel à un webservice plante dans un timeout. Est-ce que tu es sur que l'erreur ne vient pas de là ? Que se passe-t-il si tu enlèves cette ligne et que tu renvoies une valeur par défaut ?? |
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() |
Le GoogleAPI n'est pas un webserveur mais un fichier code qui se trouve bien dans mon appli dans le dossier App_Code.
De toutes façons ca ne vient pas de lui, j'ai testé en affichant uniquement le nombre de lignes lues : en local ca fonctionne très bien, sur le réseau non. voici le code de ma page : Code :
__________________
Vive Visual Studio.net !!! |
||
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
J'ai peut être une piste intéressante !
Dans le try / catch au sein de ta boucle while, complète le catch vide pour y afficher un message d'erreur contenant des informations sur une éventuelle exception qui se déroulerait. Et comme exception pouvant survenir, je verrais bien un problème avec le parsing des doubles (problème lié à la culture). Comme aucun culture n'est précisée, c'est la culture par défaut du système qui est utilisée [edit] Cela se tient d'autant plus que si jamais une exception se produit, tu ne va jamais à la fin de ton bloc try, et donc tu ne lis jamais la ligne suivante. Et donc tu traites inlassablement la même ligne. Je suis prêt à mettre ma main à couper que tu as une exception [/edit] |
|
00
|
|
|
#14 |
|
Membre du Club
![]() |
Superbe, c'est bien ça
Merci encore !
__________________
Vive Visual Studio.net !!! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com