Pourquoi la vitesse des performances entre ArcGIS et QGIS est-elle si différente?


17

Ok je ne suis pas un programmeur mais un utilisateur SIG prolifique. Je sais que QGIS est écrit en C ++ et ArcGIS en ??? mais pour la plupart de mes tâches ces derniers temps, j'essaie toujours d'utiliser QGIS non seulement parce qu'il est gratuit mais aussi parce que son expérience utilisateur est si bonne.

Tous les gourous du SIG, pouvez-vous me dire quelques raisons de la différence de vitesse entre ces deux systèmes? Honnêtement, cela me fait mal d'utiliser ArcGIS 10 en raison de sa vitesse et j'ai un PC avec 8 Go de RAM.


3
Pouvez-vous fournir plus d'informations sur les aspects que vous trouvez lents? Par exemple, la recherche de données, l'analyse des rasters, le géotraitement, etc.?
Stephen Lead

L'expérience générale est très lente .. je veux dire l'ajout de fichiers de formes ... ouverture d'arctoolbox etc
GeoH2O

2
ArcGIS n'est définitivement pas écrit en .NET. Il est principalement écrit en C ++ avec beaucoup d'autres choses boulonnées ...
Devdatta Tengshe

1
@StephenLead, j'ai cadencé ogr2ogr36 fois plus vite qu'Arcgis lors de la conversion de fichiers de formes ( ref ). Je m'attends à ce que QGIS soit un peu plus lent que barebones ogr2ogr à la même tâche, mais pas beaucoup car il utilise ogr (les preuves dans les deux cas sont les bienvenues).
matt wilkie

3
peut-être conversation re: des différences de vitesse spécifiques pourraient se poursuivre ailleurs, peut-être discuter? chat.stackexchange.com/transcript/message/3510767#3510767
matt wilkie

Réponses:


10

ArcGIS semble très gonflé. Je me souviens d'un énorme impact sur les performances lors de la migration d'Arcview 3.2 vers ArcGIS 8.0, et dans de nombreux endroits, il existe toujours. À ce moment-là, je pensais que cela avait beaucoup à voir avec la migration d'ESRI du code Arc / Info précédent vers Windows et de devoir réduire certains coins dans les performances, mais je ne suis pas sûr que ce soit vrai. Je me souviens avoir vu sur ce site des exemples de fonctions qui sont encore beaucoup plus rapides dans Arcview 3.3 qu'ArcGIS 10. Cela n'a rien à voir avec les temps de démarrage, etc. Et je ne suis pas d'accord avec la réponse précédente qu'avec les compétences utilisateur '. Cliquer et attendre n'a rien à voir avec l'habileté.

Je pense que la réalité est qu'ArcGIS n'a pas été écrit en pensant aux performances et que chaque version continue d'essayer de lancer de plus en plus de fonctionnalités sur une plateforme de code déjà surchargée.


12

Je ne connais pas très bien QGIS, mais je me demande comment il se compare à ArcGIS en termes d'extensibilité. Malheureusement, il semble y avoir au moins quelques compromis entre l'extensibilité et les performances. La meilleure façon que j'ai trouvée pour avoir une idée de l'extensibilité d'ArcGIS est de jeter un œil aux catégories de composants COM d'Esri trouvées dans le registre.

Chaque catégorie représente un endroit où les utilisateurs peuvent enregistrer des dll contenant des classes qui implémentent une interface Esri. Il y a beaucoup de catégories. Ces catégories contiennent également des aliments pour chiens - Esri les utilise non seulement pour découvrir des personnalisations tierces, mais également des fonctionnalités prêtes à l'emploi. Bien que cela offre un niveau de personnalisation très fin, cela signifie également que tous ces grains fins doivent être découverts et chargés au moment de l'exécution. Je ne sais pas quel est le coût de la réinstallation , mais il doit être important.

entrez la description de l'image ici

C:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\Categories.exe

Lorsque vous créez une DLL dans Visual Studio, il existe un endroit où vous pouvez spécifier l'adresse de base pour la DLL à charger. Comme il y a tellement de DLL de tailles différentes en cours de chargement, il sera très difficile de le savoir à l'avance pour une personnalisation d'ArcObjects. Pourtant, je me demande si un fichier de configuration pourrait être créé indiquant où la DLL doit être chargée en mémoire. Si c'est le cas, une fois qu'un utilisateur a exécuté arcmap avec les DLL chargées qu'il utilisera généralement, il pourrait exécuter une routine qui écrirait les adresses de base des DLL dans un fichier de configuration. De cette façon, lorsque arcmap démarre, il pourrait éviter la relocalisation en chargeant dans ces adresses. Là encore, peut-être qu'avec 64 bits, cela n'aura pas d'importance.

À 10,0, Esri a introduit des compléments. Les catégories de compléments sont beaucoup plus petites et la découverte ne dépend pas du registre Windows. Au lieu de cela, les DLL du complément sont zippées et placées dans un dossier connu. Je ne sais pas comment cela se compare aux performances avec les DLL découvertes via le registre Windows. Je pense que l'objectif principal était de permettre l'installation par des non-administrateurs.

Je suppose que la question fait référence au produit Desktop. Le nouveau produit ArcGIS Runtime est beaucoup plus léger. Je l'ai entendu décrit comme un remplacement de MapObjects. Il sera intéressant de voir comment il évolue. Si Esri introduit une extensibilité pour WPF Runtime, j'espère qu'ils n'utilisent pas le même mécanisme de découverte utilisé par Visual Studio lorsqu'il remplit la liste des assemblys. Cette première fois, cliquer sur "Ajouter une référence ..." est devenu extrêmement lent.


3
Il y a quelques années, un représentant commercial d'Esri m'a dit qu'Esri possède la plus grande bibliothèque COM au monde, facilement plus grande que tout ce que même Microsoft avait construit. J'ai supposé depuis lors qu'une partie de la lenteur d'Arcgis Desktop est de charger toute cette bibliothèque en même temps plutôt que de simplement saisir les morceaux nécessaires à la demande.
matt wilkie

@mattwilkie Le temps de démarrage d'ArcMap était beaucoup plus lent. Pour l'améliorer, ils ont introduit des extensions juste à temps . Je ne suis pas certain, mais je pense qu'une approche similaire est adoptée avec les objets gx qui sont chargés lorsque vous lancez la boîte de dialogue d'ajout de données la première fois.
Kirk Kuykendall

hmm. Le temps de démarrage n'est pas plus rapide pour moi (étant donné que je vais de la mémoire, pas des données, donc ça pourrait être juste de la perception). 17 secondes après avoir cliqué sur le bouton Arcmap 10 dans la barre des tâches jusqu'à ce qu'il soit prêt à faire quelque chose (avec l'assistant "charger la dernière carte" désactivé). La 2ème session dure environ 12s. C'est après avoir remplacé le disque dur C: par un SSD. Quantum prend 4 secondes pour la première manche et 2 secondes pour la suivante.
matt wilkie

@mattwilkie Oui, en même temps, ils ont ajouté de nouvelles barres d'outils, etc., de sorte que tout gain de performances juste à temps n'a probablement pas complètement compensé les retards résultant des nouvelles fonctionnalités du logiciel. Autres facteurs à considérer également: accède-t-il à un serveur de licences? Combien de RAM? Est-ce plus rapide si vous supprimez / renommez votre normal.mxt? (testez la deuxième fois après l'avoir supprimé car le premier démarrage prendra du temps pour le recréer) Avez-vous installé des personnalisations?
Kirk Kuykendall

1
Kirk: excellente réponse. @mattwilkie: c'est vrai. Mme Office avait, à un moment donné, environ 400 (+?) Objets COM. Je pense que maintenant, la GeoDatabase en elle-même en a autant. La vérité est que pour le meilleur ou pour le pire, ESRI est devenu un peu fou COM. Je pense que pour le moment, c'était une décision saine et sûre.
Ragi Yaser Burhum

8

Pardonnez-moi d'avoir ressuscité le fil, mais je peux donner un exemple spécifique de la façon dont l'expérience utilisateur diffère pour ArcMap et QGIS.

Aujourd'hui, je devais construire une grille de points avec un espacement de 250 mètres à travers un petit pays, couper la grille de points à un polygone de frontière de pays et associer les valeurs de plusieurs rasters à la grille de points.

Dans ArcMap, cela m'a pris environ 10 minutes, du téléchargement des données vers un ensemble de données terminé. Dans QGIS (Wroclaw), le programme s'est écrasé deux fois juste en découpant la grille avec le polygone, puis a fonctionné pendant une heure avant de terminer la troisième tentative. C'est sur une boîte avec 4 dual-cores et 6 Go de RAM.

J'adore QGIS et cela me contrarie d'utiliser ArcMap, mais je trouve de nombreux cas d'utilisation courants où QGIS ne répond pas à mes besoins.

Maintenant, si quelqu'un a des conseils de réglage des performances qui pourraient résoudre cet écart de performances, je suis tout à fait à l'écoute.

Chris


d'accord, mais pour ce que ça vaut, je me rends toujours à QGIS d'abord et si cela ne fonctionne pas, retournez à ArcGIS
GeoH2O

1
Cela me semble être un bug. Les plantages ne sont pas une mesure des mauvaises performances mais le symptôme d'un problème. Signalez-le aux gens de QGIS
Nicklas Avén

Pour quelle superficie construisez-vous cette grille de points? Je viens d'exécuter le même type d'opération sur 57 000 points dans QGIS (1.9) sans problème.
Simbamangu

@Simbamangu c'était pour une boîte englobante autour du Honduras - environ un demi-million de points. à Nicklas_Aven: Point pris; si j'ai le temps de reproduire de manière fiable, je soumettrai.
iamchriskelley

6

Je ne pense pas que Arc soit écrit en .NET. Les Arcobjects sont écrits en C ++. L'arc peut être plus lent en raison de l'utilisation de nombreuses interfaces graphiques avancées, outils d'aide, modules complémentaires, etc. QGIS est un excellent logiciel, mais il manque certaines fonctionnalités utiles qui peuvent être bonnes pour les débutants. Je ne pense pas non plus que les outils de base de lavel dans ESRI (Arcobjects) soient lents. Cela se résume généralement aux compétences des utilisateurs, si les utilisateurs savent comment utiliser Arc, ce n'est pas si lent du tout. Cela dit, je dois également mentionner que chaque outil doit être examiné au cas par cas en ce qui concerne ses performances. L'autre chose est que, Arc était le premier sur la scène SIG. La première (relativement à QGIS) est toujours avec des bugs et la prochaine génération est un peu meilleure, dans ce cas plus rapide, mais tout cela n'est que mon opinion personnelle.


2
Sidenote: Je soupçonne qu'au moins certaines parties du noyau d'ArcGIS sont toujours écrites en Fortran (ce qui est censé être aussi rapide, sinon plus rapide que C pour certaines tâches numériques): Si vous exécutez une application de console .NET qui utilise ArcObjects, et si vous appuyez Ctrl+Cpendant qu'un ArcObjects effectue une opération, vous obtiendrez un message d'une bibliothèque d'exécution Fortran.
stakx

5
Sans entrer dans les moindres détails, ArcObjects est basé sur COM , l'un des premiers cadres d'interopérabilité, et a ses propres charges de performance, en particulier lors du marshaling entre le code managé (par exemple .NET) et non managé (C ++).
blah238

4
@stakx Il y a des frais généraux dans ce code Fortran, au moins du côté raster (Spatial Analyst). J'ai développé des modules complémentaires Fortran pour SA et j'ai constaté qu'ils fonctionnaient toujours au moins cinq fois plus rapidement. Au fil des ans, les couches d'enveloppes sur enveloppes sur enveloppes qui ont été conçues pour intégrer le code d'origine (années 70 et 80) ont créé une charge croissante sur les performances d'Arc *.
whuber

6

Cela concerne les performances d'ArcGIS: ArcMap, ArcCatalog très lent à ouvrir sur un nouvel ordinateur portable avec de nombreuses ressources? qui peut en partie expliquer certains des problèmes de performance. Ce thread montre comment le matériel, le réseau et la configuration des licences peuvent avoir un effet substantiel sur les performances d'ArcGIS. Il est possible que certaines des différences de vitesse signalées soient dues à de tels facteurs plutôt qu'à des différences inhérentes de capacités.

(Publié comme lien de réponse, car les commentaires ont tendance à se perdre.)


1
Les réponses et les commentaires ont des objectifs différents ici, Dan. Vous avez raison, les commentaires ont un statut de seconde classe. L'une des raisons est de mettre l'accent sur des réponses véritablement utiles. Tout ce qui n'est pas une réponse devrait être un effort pour répondre à une question ou pour améliorer une question ou une réponse: c'est un commentaire, même quand c'est vraiment brillant.
whuber

Nous avons convenu que la version dans nos laboratoires fonctionne mieux que la version d'essai que
j'utilise

2

Je travaille avec des données au niveau de l'entreprise (données de points d'intérêt pour toute la Turquie par exemple) et parfois juste pour vérifier l'ensemble de données, j'ai besoin de ce rendu.

Si vous souhaitez améliorer vos performances avec ArcGIS, il y a peu de choses que je pourrais conseiller;

Utilisez toujours les données projetées. Utilisez des géodatabases ou ArcSDE avec des travaux postgresql parfaits pour moi.

Utiliser la géodatabase fichier et si possible arcsde augmente la vitesse de vos opérations. Mon expérience personnelle avec QGIS et ArcMap est en fait le contraire. Comme cela prend presque quelques minutes pour rendre 3 millions de points sur une carte. D'un autre côté, ArcMap les rend en quelques secondes.

Juste mon avis.


Pourquoi rendre 3 millions de points? Si vous voulez dire que la couche a 3 millions de points et que certains d'entre eux sont à votre avis, c'est rapide aussi dans QGIS, mais vous aurez besoin d'un index spatial. Mais je suis d'accord que QGIS peut être assez difficile à arrêter lorsque vous faites l'erreur d'essayer de rendre trop de géométries. Même lors de la suppression du rendu avec esc, les géoémissions déjà rendues y sont parfois suspendues.
Nicklas Avén
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.