¿Por qué la velocidad de rendimiento entre ArcGIS y QGIS es tan diferente?

17

Ok, no soy un programador sino un prolífico usuario de SIG. Sé que QGIS está escrito en C ++ y ArcGIS en ??? pero para la mayoría de mis tareas últimamente, siempre trato de usar QGIS no solo porque es gratuito sino porque su experiencia de usuario es muy buena.

Todos los GIS Gurus que existen pueden decirme algunas razones de la diferencia de velocidad entre estos dos sistemas? Sinceramente, me duele usar ArcGIS 10 debido a su velocidad y tengo una PC con 8 GB de RAM.

GeoH2O
fuente
3
¿Puede proporcionar más información sobre los aspectos que le parecen lentos? Por ejemplo, ¿buscar datos, analizar rásteres, geoprocesamiento, etc.?
Stephen Lead
La experiencia general es muy lenta ... me refiero a agregar shapefiles ... abrir arctoolbox, etc.
GeoH2O
2
ArcGIS definitivamente no está escrito en .NET. Está escrito principalmente en C ++ con muchas otras cosas atornilladas a ...
Devdatta Tengshe
1
@StephenLead, he registrado ogr2ogr36 veces más rápido que Arcgis al convertir shapefiles ( ref ). Espero que QGIS sea un poco más lento que barebones ogr2ogr en la misma tarea, pero no mucho ya que usa ogr (la evidencia de cualquier manera es bienvenida).
matt wilkie
3
tal vez la conversación re: diferencias de velocidad específicas podrían llevarse a cabo en otro lugar, tal vez chatear? chat.stackexchange.com/transcript/message/3510767#3510767
matt wilkie

Respuestas:

10

ArcGIS parece muy hinchado. Recuerdo un gran impacto en el rendimiento al migrar de Arcview 3.2 a ArcGIS 8.0, y en muchos lugares todavía existe. En ese momento, pensé que tenía mucho que ver con que ESRI migrara el código Arc / Info anterior a Windows y tuviera que reducir algunas esquinas en el rendimiento, pero no estoy seguro de si eso es cierto. Recuerdo haber visto algunos ejemplos en este mismo sitio sobre funciones que todavía son dramáticamente más rápidas en Arcview 3.3 que en ArcGIS 10. Esto no tiene nada que ver con los tiempos de inicio, etc. Y no estoy de acuerdo con la respuesta anterior que tiene que ver con 'habilidades de usuario '. Hacer clic y esperar no tiene nada que ver con la habilidad.

Creo que la realidad es que ArcGIS no se escribió teniendo en cuenta el rendimiento y cada versión sigue intentando lanzar cada vez más funcionalidades en una plataforma de código ya sobrecargada.

blindjesse
fuente
12

No estoy tan familiarizado con QGIS, pero me pregunto cómo se compara con ArcGIS en términos de extensibilidad. Desafortunadamente, parece haber al menos algunas compensaciones entre extensibilidad y rendimiento. La mejor manera que he encontrado para tener una idea de la extensibilidad de ArcGIS es echar un vistazo a las categorías de componentes COM de Esri que se encuentran en el registro.

Cada categoría representa un lugar donde los usuarios pueden registrar archivos DLL que contienen clases que implementan una interfaz Esri. Hay muchas categorías. Estas categorías también contienen comida para perros : Esri las usa no solo para descubrir personalizaciones de terceros, sino también para la funcionalidad inmediata. Si bien esto proporciona un nivel de personalización muy fino, también significa que todos estos granos finos necesitan ser descubiertos y cargados en tiempo de ejecución. No estoy seguro de cuál es el costo de reubicación , pero debe ser significativo.

ingrese la descripción de la imagen aquí

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

Cuando crea un archivo DLL en Visual Studio, hay un lugar donde puede especificar la dirección base para cargar el archivo DLL. Dado que hay tantos dlls de diferentes tamaños que se cargan, saber esto con anticipación para una personalización de ArcObjects sería muy difícil. Aún así, me pregunto si podría crearse un archivo de configuración que indique dónde debe cargarse el dll en la memoria. Si es así, una vez que un usuario tiene arcmap ejecutándose con los dlls cargados que normalmente usará, podría ejecutar una rutina que escribiría las direcciones base de dll en un archivo de configuración. De esa manera, cuando se inicie arcmap, podría evitar la reubicación al cargar en esas direcciones. Por otra parte, tal vez con 64 bits, esto no importará.

En 10.0, Esri introdujo complementos. Las categorías de complementos son mucho más pequeñas, y el descubrimiento no depende del registro de Windows. En cambio, los dlls de complementos se comprimen y se colocan en una carpeta conocida. No estoy seguro de cómo esto compara el rendimiento en cuanto a los dlls descubiertos a través del registro de Windows. Creo que el objetivo principal era permitir la instalación por no administradores.

Supongo que la pregunta se refiere al producto de escritorio. El nuevo producto ArcGIS Runtime es mucho más liviano. Lo escuché descrito como un reemplazo para MapObjects. Será interesante ver cómo evoluciona. Si Esri introduce la extensibilidad para WPF Runtime, espero que no usen el mismo mecanismo de descubrimiento utilizado por Visual Studio cuando llena la lista de ensamblados. La primera vez que haga clic en "Agregar referencia ..." se ha vuelto extremadamente lento.

Kirk Kuykendall
fuente
3
Un representante de ventas de Esri me dijo hace unos años que Esri tiene la biblioteca COM más grande del mundo, fácilmente más grande que cualquier cosa que incluso Microsoft haya construido. Asumí desde entonces que parte de la lentitud de Arcgis Desktop es cargar toda esa biblioteca a la vez, en lugar de solo tomar los pedazos necesarios a pedido.
Matt Wilkie
@mattwilkie El tiempo de inicio de ArcMap solía ser mucho más lento. Para mejorarlo, introdujeron extensiones justo a tiempo . No estoy seguro, pero creo que se adopta un enfoque similar con los objetos gx que se cargan cuando se activa el cuadro de diálogo Agregar datos la primera vez.
Kirk Kuykendall
hmm El tiempo de inicio no es más rápido para mí (dado que voy de memoria, no de datos, por lo que podría ser solo percepción). 17 segundos desde hacer clic en el botón Arcmap 10 en la barra de tareas hasta que esté listo para hacer algo (con el asistente de "cargar el último mapa" desactivado). La segunda sesión es de unos 12 años. Esto es después de reemplazar el disco duro C: con un SSD. Quantum toma 4 segundos para la primera carrera y 2 segundos para la siguiente.
Matt Wilkie
@mattwilkie Sí, al mismo tiempo que agregaron nuevas barras de herramientas, etc., por lo que es probable que cualquier aumento de rendimiento de justo a tiempo no haya compensado por completo los retrasos resultantes de las nuevas características del software. También otros factores a considerar: ¿Está accediendo a un servidor de licencias? Cuanta RAM ¿Es más rápido si elimina / cambia el nombre de su normal.mxt? (pruebe por segunda vez después de eliminarlo, ya que el primer inicio llevará tiempo volver a crearlo) ¿Ha instalado personalizaciones?
Kirk Kuykendall
1
Kirk: gran respuesta. @mattwilkie: es cierto. La Sra. Office tenía, en un momento, alrededor de 400 (+?) Objetos COM. Creo que por ahora, la GeoDatabase por sí sola tiene tantos. La verdad es que, para bien o para mal, ESRI se volvió un poco loco. Creo que por el momento, fue una decisión segura y sólida.
Ragi Yaser Burhum
8

Perdóname por resucitar el hilo, pero puedo dar un ejemplo específico de cómo la experiencia del usuario difiere de ArcMap y QGIS.

Hoy necesitaba construir una cuadrícula de puntos con un espacio de 250 metros en un país pequeño, recortar la cuadrícula de puntos en un polígono de frontera de país y asociar los valores de varios rásteres a la cuadrícula de puntos.

En ArcMap, esto me llevó unos 10 minutos, desde la descarga de los datos hasta un conjunto de datos terminado. En QGIS (Wroclaw), el programa se bloqueó dos veces simplemente recortando la cuadrícula con el polígono, luego se ejecutó durante una hora antes de completar el tercer intento. Esto está en una caja con 4 núcleos duales y 6 Gb de RAM.

Me encanta QGIS y me molesta usar ArcMap, pero encuentro muchos casos de uso comunes en los que QGIS no satisface mis necesidades.

Ahora, si alguien tiene algún consejo de ajuste de rendimiento que pueda resolver esta brecha de rendimiento, soy todo oídos.

Chris

iamchriskelley
fuente
de acuerdo, pero por lo que vale, siempre acudo primero a QGIS y, si no funciona, regreso a ArcGIS
GeoH2O el
1
Suena como un error para mí. Los bloqueos no son una medida del mal desempeño sino un síntoma de algo mal. Informe a la gente de QGIS
Nicklas Avén
¿Para qué área está construyendo esta cuadrícula de puntos? Simplemente ejecuté el mismo tipo de operación en 57k puntos en QGIS (1.9) sin ningún problema.
Simbamangu
@Simbamangu esto fue para un cuadro delimitador alrededor de Honduras: aproximadamente medio millón de puntos. en Nicklas_Aven: Punto tomado; si tengo tiempo para reproducirme de manera confiable, lo enviaré.
iamchriskelley el
6

No creo que Arc esté escrito en .NET. Los arcobjects están escritos en C ++. Arc puede ser más lento debido al uso de muchas GUI avanzadas, herramientas de ayuda, complementos, etc. QGIS es un excelente software, pero carece de algunas características útiles que pueden ser buenas para los principiantes. Además, no creo que las herramientas básicas de nivel en ESRI (Arcobjects) sean lentas. Por lo general, se reduce a las habilidades del usuario, si el usuario sabe cómo usar Arc, no es tan lento en absoluto. Dicho esto, debo mencionar también que cada herramienta debe considerarse caso por caso con respecto a su rendimiento. La otra cosa es que Arc fue el primero en la escena SIG. Primero (relativamente a QGIS) es siempre con errores y la próxima generación es un poco mejor, en este caso más rápido, pero todo esto es solo mi opinión personal.

Tomek
fuente
2
Nota al margen: sospecho que al menos partes del núcleo de ArcGIS todavía están escritas en Fortran (que se rumorea que es tan rápido, si no más rápido, que C para ciertas tareas numéricas): si ejecuta una aplicación de consola .NET que utiliza ArcObjects, y presiona Ctrl+Cmientras un ArcObjects realiza alguna operación, recibirá un mensaje de una biblioteca de tiempo de ejecución de Fortran.
stakx
55
Además, sin entrar en detalles, ArcObjects se basa en COM , uno de los primeros marcos de interoperabilidad, y tiene sus propias cargas de rendimiento, especialmente cuando se ordena entre código administrado (por ejemplo, .NET) y no administrado (C ++).
blah238
44
@stakx Hay una sobrecarga en ese código Fortran, al menos en el lado de la trama (Spatial Analyst). Desarrollé complementos de Fortran para SA y descubrí que siempre se ejecutaban al menos cinco veces más rápido. A lo largo de los años, las capas de envoltorios en envoltorios en envoltorios que se han construido para integrar el código original (antiguos años 70 y 80) han creado una carga creciente en el rendimiento de Arc *.
whuber
6

Esto se relaciona con el rendimiento de ArcGIS: ArcMap, ArcCatalog, ¿es muy lento para abrir en una computadora portátil nueva con amplios recursos? que en parte puede explicar algunos de los problemas de rendimiento. Ese hilo muestra cómo el hardware, la red y la configuración de licencias pueden tener un efecto sustancial en el rendimiento de ArcGIS. Posiblemente, algunas de las diferencias informadas en la velocidad podrían deberse a tales factores y no a diferencias inherentes en las capacidades.

(Publicado como un enlace de respuesta, ya que los comentarios tienden a perderse).

Comunidad
fuente
1
Las respuestas y los comentarios tienen diferentes propósitos aquí, Dan. Tienes razón, los comentarios tienen un estado de segunda clase. Una razón es enfatizar respuestas genuinamente útiles. Cualquier cosa que no sea una respuesta debe ser un esfuerzo para responder una pregunta o para mejorar una pregunta o respuesta: es un comentario, incluso cuando es realmente brillante.
whuber
Acordé que la versión en nuestros laboratorios funciona mejor que la versión de prueba que estoy ejecutando en mi PC ...
GeoH2O
2

Trabajo con datos de nivel empresarial (datos de puntos de interés para toda Turquía, por ejemplo) y, a veces, solo para verificar el conjunto de datos, necesito esa representación.

Si desea mejorar su rendimiento con ArcGIS, hay algunas cosas que podría recomendarle;

Utilice siempre los datos proyectados. Usar geodatabases o ArcSDE con postgresql funciona perfecto para mí.

El uso de la geodatabase de archivos y, si es posible, arcsde aumenta la velocidad de sus operaciones. Mi experiencia personal con QGIS y ArcMap es en realidad lo contrario. Como toma casi minutos renderizar 3 millones de puntos en un mapa. Por otro lado, ArcMap los renderiza en segundos.

Solo es mi opinión.

Anıl Çelik
fuente
¿Por qué rendir 3 millones de puntos? Si quiere decir que la capa tiene 3 millones de puntos y algunos de ellos están a su vista, eso también es rápido en QGIS, pero necesitará un índice espacial. Pero estoy de acuerdo en que QGIS puede ser bastante difícil de detener cuando comete el error de intentar representar demasiadas geometrías. Incluso cuando se elimina el renderizado con esc, las geoemtrías ya renderizadas a veces cuelgan allí.
Nicklas Avén