Por que a velocidade de desempenho entre o ArcGIS e o QGIS é tão diferente?

17

Ok, eu não sou um programador, mas um usuário prolífico de GIS. Eu sei que QGIS é escrito em C ++ e ArcGIS em ??? ultimamente, na maioria das minhas tarefas, eu sempre tento usar o QGIS não apenas porque é gratuito, mas também porque a experiência do usuário é muito boa.

Todos os Gurus do GIS por aí, você pode me dizer algumas razões para a diferença de velocidade entre esses dois sistemas? Honestamente, me dói usar o ArcGIS 10 devido à sua velocidade e eu tenho um PC com 8 GB de RAM.

GeoH2O
fonte
3
Você pode fornecer mais informações sobre quais aspectos você acha lento? Por exemplo, navegando por dados, analisando rasters, geoprocessamento, etc?
Stephen Lead
A experiência geral é .i muito lentas significar a adição de shapefiles ... abrindo ArcToolbox etc
GeoH2O
2
O ArcGIS definitivamente não está escrito em .NET. É, sobretudo, escrito em C ++ com um monte de outras coisas aparafusado ...
Devdatta Tengshe
1
@StephenLead, registrei ogr2ogr36 vezes mais rápido que o Arcgis ao converter shapefiles ( ref ). Eu espero que o QGIS seja um pouco mais lento que os barebones ogr2ogr na mesma tarefa, mas não muito desde que ele use ogr (evidências de qualquer maneira são bem-vindas).
214122 #
3
talvez conversa sobre: ​​diferenças específicas de velocidade possam ser realizadas em outro lugar, talvez conversar? chat.stackexchange.com/transcript/message/3510767#3510767
mate Wilkie

Respostas:

10

O ArcGIS parece muito inchado. Lembro-me de um enorme impacto no desempenho ao migrar do Arcview 3.2 para o ArcGIS 8.0 e, em muitos lugares, ele ainda existe. Naquela época, eu achava que tinha muito a ver com a migração de códigos Arc / Info anteriores para o Windows e com a necessidade de reduzir alguns cantos no desempenho, mas não tenho certeza se isso é verdade. Lembro-me de ver alguns exemplos neste site sobre funções que ainda são muito mais rápidas no Arcview 3.3 do que no ArcGIS 10. Isso não tem nada a ver com os tempos de inicialização, etc. E eu discordo da resposta anterior do que das habilidades do usuário ' Clicar e esperar não tem nada a ver com habilidade.

Eu acho que a realidade é que o ArcGIS não foi escrito com o desempenho em mente e cada versão continua tentando lançar cada vez mais funcionalidade em uma plataforma de código já sobrecarregada.

blindjesse
fonte
12

Não conheço o QGIS, mas me pergunto como ele se compara ao ArcGIS em termos de extensibilidade. Infelizmente, parece haver pelo menos algumas vantagens e desvantagens entre extensibilidade e desempenho. A melhor maneira de descobrir a extensibilidade do ArcGIS é examinar as categorias de componentes COM da Esri encontradas no registro.

Cada categoria representa um local onde os usuários podem registrar DLLs contendo classes que implementam uma interface Esri. Existem muitas categorias. Essas categorias também contêm comida de cachorro - a Esri as usa não apenas para descobrir personalizações de terceiros, mas também para funcionalidade imediata. Embora isso ofereça um nível de personalização muito refinado, também significa que todos esses grãos finos precisam ser descobertos e carregados em tempo de execução. Não sei ao certo qual é o custo de realocação , mas deve ser significativo.

insira a descrição da imagem aqui

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

Quando você cria uma dll no Visual Studio, há um local em que você pode especificar o endereço base para a dll carregar. Como existem muitas dlls de tamanhos diferentes sendo carregadas, saber isso com antecedência para uma personalização do ArcObjects seria muito difícil. Ainda assim, gostaria de saber se um arquivo de configuração pode ser criado, instruindo onde a dll deve ser carregada na memória. Nesse caso, uma vez que o usuário tenha o arcmap executando com as dlls carregadas que ele normalmente usará, ele poderá executar uma rotina que gravará os endereços base da dll em um arquivo de configuração. Dessa forma, quando o arcmap é iniciado, pode evitar a realocação carregando nesses endereços. Por outro lado, talvez com 64 bits isso não importe.

Na 10.0, Esri introduziu suplementos. As categorias de suplementos são muito menores e a descoberta não depende do registro do Windows. Em vez disso, as DLLs de suplemento são compactadas e colocadas em uma pasta conhecida. Não tenho certeza de como isso compara o desempenho com as DLLs descobertas pelo registro do Windows. Eu acho que o objetivo principal era permitir a instalação por não administradores.

Estou assumindo que a pergunta está se referindo ao produto Desktop. O novo produto ArcGIS Runtime é muito mais leve. Eu ouvi isso descrito como um substituto para o MapObjects. Será interessante ver como evolui. Se o Esri introduzir extensibilidade para o WPF Runtime, espero que eles não usem o mesmo mecanismo de descoberta usado pelo Visual Studio quando ele preencher a lista de assemblies. A primeira vez que você clicou em "Adicionar referência ..." ficou dolorosamente lenta.

Kirk Kuykendall
fonte
3
Foi-me dito por um representante de vendas da Esri há alguns anos que a Esri possui a maior biblioteca COM do mundo, facilmente maior do que qualquer coisa que a Microsoft havia construído. Desde então, assumi que parte da lentidão do Arcgis Desktop está carregando toda a biblioteca de uma só vez, em vez de apenas pegar os pedaços necessários sob demanda.
214122 Mattel
@mattwilkie O tempo de inicialização do ArcMap costumava ser muito mais lento. Para melhorá-lo, eles introduziram extensões just-in-time . Não tenho certeza, mas acho que uma abordagem semelhante é adotada com objetos gx que são carregados quando você aciona a caixa de diálogo adicionar dados pela primeira vez.
21412 Kirk Kuykendall
Hmm. O tempo de inicialização não é mais rápido para mim (desde que estou saindo da memória, não dos dados, portanto pode ser apenas percepção). 17s clicando no botão Arcmap 10 na barra de tarefas até que esteja pronto para fazer alguma coisa (com o assistente de "carregar o último mapa" desativado). 2ª sessão é de cerca de 12s. Isso ocorre após a substituição do disco rígido C: por um SSD. A Quantum leva 4s para a primeira corrida e 2s para a próxima.
22612 #
@mattwilkie Sim, ao mesmo tempo em que adicionaram novas barras de ferramentas etc., qualquer ganho de desempenho just-in-time provavelmente não compensou completamente os atrasos resultantes dos novos recursos de software. Também há outros fatores a considerar: Ele está acessando um servidor de licenças? Quanta RAM? É mais rápido se você excluir / renomear seu normal.mxt? (teste pela segunda vez depois de excluí-lo, pois a primeira inicialização levará tempo para recriá-lo) Você instalou personalizações?
22412 Kirk Kuykendall
1
Kirk: ótima resposta. @mattwilkie: é verdade. Ms Office tinha, a certa altura, cerca de 400 (+?) Objetos COM. Eu acho que agora, o GeoDatabase possui muitos. A verdade é que, para o bem ou para o mal, a ESRI enlouqueceu um pouco. Acho que, na época, foi uma decisão segura.
Ragi Yaser Burhum 23/03
8

Perdoe-me por ressuscitar o encadeamento, mas posso dar um exemplo específico de como a experiência do usuário difere do ArcMap e QGIS.

Hoje, eu precisava criar uma grade de pontos com espaçamento de 250 metros em um país pequeno, prender a grade de pontos em um polígono de borda do país e associar os valores de várias barras de rastreio à grade de pontos.

No ArcMap, demorei cerca de 10 minutos, desde o download dos dados até um conjunto de dados concluído. Em QGIS (Wroclaw), o programa travou duas vezes apenas cortando a grade com o polígono e depois foi executado por uma hora antes de concluir a terceira tentativa. Isso está em uma caixa com 4 núcleos duplos e 6 GB de RAM.

Eu amo o QGIS e me incomoda usar o ArcMap, mas encontro muitos casos de uso comuns em que o QGIS não atende às minhas necessidades.

Agora, se alguém tiver algum conselho de ajuste de desempenho que possa resolver essa lacuna de desempenho, sou todo ouvidos.

Chris

iamchriskelley
fonte
concordou, mas para o que vale a pena eu sempre migram para QGIS primeiro e se ele não funciona lá de volta para ArcGIS
GeoH2O
1
Parece um bug para mim. Crashes não é uma medida de desempenho ruim, mas um sintoma de algo errado. Reporte para o pessoal do QGIS #
Nicklas Avén 23/03
Para qual área você está construindo essa grade de pontos? Acabei de executar o mesmo tipo de operação em 57k pontos no QGIS (1.9) sem nenhum problema.
Simbamangu 23/03
@ Simbamangu, isso foi para uma caixa delimitadora em Honduras - aproximadamente meio milhão de pontos. em Nicklas_Aven: ponto tomado; se eu tiver tempo para reproduzir de forma confiável, enviarei.
iamchriskelley
6

Eu não acho que o Arc seja escrito em .NET. Arcobjects são escritos em C ++. O arco pode ser mais lento devido ao uso de muitas GUIs avançadas, ferramentas de ajuda, complementos etc. O QGIS é um ótimo software, mas carece de alguns recursos úteis que podem ser bons para iniciantes. Também não acho que as ferramentas básicas do ESRI (Arcobjects) sejam lentas. Geralmente, tudo se resume às habilidades do usuário; se o usuário souber usar o Arc, não será tão lento assim. Dito isto, devo mencionar também que toda ferramenta deve ser considerada caso a caso em relação ao seu desempenho. A outra coisa é que Arc foi o primeiro na cena GIS. Primeiro (relativamente ao QGIS) é sempre com bugs e a próxima geração é um pouco melhor, neste caso, mais rápida, mas tudo isso é apenas minha opinião pessoal.

Tomek
fonte
2
Nota: Suspeito que pelo menos partes do núcleo do ArcGIS ainda estejam escritas no Fortran (há rumores de que seja tão rápido, se não mais rápido que, C para determinadas tarefas numéricas): Se você executar um aplicativo de console .NET que utilize ArcObjects, e você pressiona Ctrl+Cenquanto um ArcObjects realiza alguma operação, você receberá uma mensagem da biblioteca de tempo de execução do Fortran.
stakx
5
Além disso, sem entrar em detalhes, o ArcObjects é baseado no COM , uma das estruturas de interoperabilidade mais antigas, e possui seus próprios encargos de desempenho, especialmente ao selecionar entre código gerenciado (por exemplo, .NET) e não gerenciado (C ++).
blah238
4
@stakx Existe uma sobrecarga nesse código Fortran, pelo menos no lado raster (Spatial Analyst). Desenvolvi complementos do Fortran para o SA e descobri que eles sempre eram executados pelo menos cinco vezes mais rápido. Ao longo dos anos, as camadas de invólucros em invólucros em invólucros que foram construídas para integrar o código original (vintage dos anos 70 e 80) criaram uma carga crescente no desempenho do Arc *.
whuber
6

Isso está relacionado ao desempenho do ArcGIS: ArcMap, ArcCatalog é muito lento para abrir em um novo laptop com amplos recursos? o que em parte pode ser responsável por alguns dos problemas de desempenho. Esse tópico mostra como a configuração de hardware, rede e licenciamento pode ter um efeito substancial no desempenho do ArcGIS. Possivelmente, algumas das diferenças relatadas na velocidade podem ser devidas a esses fatores, e não a diferenças inerentes nas capacidades.

(Publicado como um link de resposta, pois os comentários tendem a se perder.)

Comunidade
fonte
1
Respostas e comentários têm finalidades diferentes aqui, Dan. Você está certo, os comentários têm um status de segunda classe. Uma razão é enfatizar respostas genuinamente úteis. Qualquer coisa que não seja uma resposta deve ser um esforço para tornar uma pergunta responsável ou para melhorar uma pergunta ou resposta: isso é um comentário, mesmo quando é realmente brilhante.
whuber
Concordou a versão em nossos laboratórios funcionam melhor do que a versão de teste eu estou rodando no meu PC ...
GeoH2O
2

Trabalho com dados de nível empresarial (dados de pontos de interesse de toda a Turquia, por exemplo) e, às vezes, apenas para verificar o conjunto de dados, preciso dessa renderização.

Se você deseja melhorar seu desempenho com o ArcGIS, há algumas coisas que eu poderia aconselhar;

Sempre use dados projetados. Usar geodatabases ou ArcSDE com o postgresql funciona perfeito para mim.

O uso do geodatabase de arquivo e, se possível, o arcsde aumentam a velocidade de suas operações. Minha experiência pessoal com QGIS e ArcMap é realmente o contrário. Como leva quase alguns minutos para renderizar 3 milhões de pontos em um mapa. Por outro lado, o ArcMap os processa em segundos.

Apenas minha opinião.

Anıl Çelik
fonte
Por que render 3 milhões de pontos? Se você quer dizer que a camada tem 3 milhões de pontos e alguns deles estão na sua opinião, isso também é rápido no QGIS, mas você precisará de um índice espacial. Mas concordo que o QGIS pode ser bastante difícil de parar quando você comete o erro de tentar renderizar muitas geometrias. Mesmo ao matar a renderização com esc, as geoemperaturas já renderizadas às vezes ficam lá.
Nicklas Avén 23/03