Dlaczego prędkość wydajności między ArcGIS i QGIS jest tak różna?

17

Ok, nie jestem programistą, ale płodnym użytkownikiem GIS. Wiem, że QGIS jest napisany w C ++, a ArcGIS w ??? ale ostatnio do większości moich zadań zawsze staram się korzystać z QGIS nie tylko dlatego, że jest bezpłatny, ale także dlatego, że jego wrażenia z użytkowania są tak dobre.

Wszyscy Guru GIS, czy możesz mi powiedzieć kilka powodów różnicy prędkości między tymi dwoma systemami? Szczerze mówiąc, boli mnie korzystanie z ArcGIS 10 ze względu na jego szybkość i mam komputer z 8 GB pamięci RAM.

GeoH2O
źródło
3
Czy możesz podać więcej informacji na temat powolnych aspektów? Np. Przeglądanie danych, analizowanie rastrów, geoprzetwarzanie itp.?
Stephen Lead
Ogólne doświadczenie jest bardzo powolne ... to znaczy dodawanie plików kształtów ... otwieranie arctoolbox itp.
GeoH2O
2
ArcGIS zdecydowanie nie jest napisany w .NET. Jest napisany głównie w C ++, a wiele innych rzeczy jest przykręconych ...
Devdatta Tengshe,
1
@StephenLead, ja taktowany ogr2ogrco 36 razy szybciej niż arcgis przy konwersji Shapefiles ( ref ). Oczekuję, że QGIS byłby trochę wolniejszy niż ogr2ogr na boso przy tym samym zadaniu, ale niewiele, ponieważ używa ogr (dowody są mile widziane).
matt wilkie
3
może rozmowa dotyczy: specyficzne różnice prędkości mogłyby być prowadzone gdzie indziej, może na czacie? chat.stackexchange.com/transcript/message/3510767#3510767
matt wilkie

Odpowiedzi:

10

ArcGIS wydaje się bardzo rozdęty. Pamiętam ogromny spadek wydajności podczas migracji z Arcview 3.2 do ArcGIS 8.0, i w wielu miejscach wciąż istnieje. W tym czasie myślałem, że ma to wiele wspólnego z migracją wcześniejszego kodu Arc / Info do systemu Windows i koniecznością zmniejszenia wydajności, ale nie jestem pewien, czy to prawda. Pamiętam, że widziałem kilka przykładów na tej stronie dotyczących funkcji, które są wciąż znacznie szybsze w Arcview 3.3 niż ArcGIS 10. Nie ma to nic wspólnego z czasami uruchamiania itp. I nie zgadzam się z poprzednią odpowiedzią niż z umiejętnościami użytkownika „. Klikanie i czekanie nie ma nic wspólnego z umiejętnościami.

Myślę, że w rzeczywistości ArcGIS nie został napisany z myślą o wydajności, a każda wersja próbuje wrzucić coraz więcej funkcji na już przeciążoną platformę kodową.

blindjesse
źródło
12

QGIS nie znam się tak dobrze, ale zastanawiam się, jak wypada w porównaniu z ArcGIS pod względem rozszerzalności. Niestety wydaje się, że istnieją przynajmniej pewne kompromisy między rozszerzalnością a wydajnością. Najlepszym sposobem, w jaki udało mi się poznać rozszerzalność ArcGIS, jest przyjrzenie się kategoriom komponentów Esri w rejestrze.

Każda kategoria reprezentuje miejsce, w którym użytkownicy mogą rejestrować biblioteki dll zawierające klasy implementujące interfejs Esri. Istnieje wiele kategorii. Te kategorie zawierają również karmę dla psów - Esri używa ich nie tylko do odkrywania dostosowań innych firm, ale także po wyjęciu z pudełka. Chociaż zapewnia to bardzo drobiazgowy poziom dostosowania, oznacza to również, że wszystkie te drobne ziarna muszą zostać odkryte i załadowane w czasie wykonywania. Nie jestem pewien, jaki jest koszt przeprowadzki , ale musi być znaczny.

wprowadź opis zdjęcia tutaj

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

Podczas tworzenia biblioteki DLL w programie Visual Studio istnieje miejsce, w którym można określić adres bazowy biblioteki DLL do załadowania. Ponieważ ładuje się tak wiele bibliotek DLL o różnych rozmiarach, wiedząc, że z wyprzedzeniem dostosowanie ArcObjects byłoby bardzo trudne. Nadal zastanawiam się, czy można utworzyć plik konfiguracyjny z instrukcją, gdzie dll powinien zostać załadowany do pamięci. Jeśli tak, gdy użytkownik uruchomi arcmap z załadowanymi bibliotekami DLL, których zwykle używa, może uruchomić procedurę zapisującą podstawowe adresy bibliotek DLL w pliku konfiguracyjnym. W ten sposób, gdy arcmap się uruchomi, może uniknąć przeniesienia poprzez załadowanie do tych adresów. Z drugiej strony może 64-bitowe to nie będzie miało znaczenia.

O 10.0 Esri wprowadziło dodatki. Kategorie dodatków są znacznie mniejsze, a wykrywanie nie zależy od rejestru systemu Windows. Zamiast tego biblioteki DLL dodatków są spakowane i umieszczone w znanym folderze. Nie jestem pewien, jak to pod względem wydajności porównuje się z bibliotekami DLL wykrytymi przez rejestr systemu Windows. Myślę, że głównym celem było umożliwienie instalacji przez osoby niebędące administratorami.

Zakładam, że pytanie dotyczy produktu Desktop. Nowy produkt ArcGIS Runtime jest znacznie lżejszy. Słyszałem, że jest to opisywane jako zamiennik MapObjects. Ciekawie będzie zobaczyć, jak się rozwija. Jeśli Esri wprowadzi rozszerzalność dla środowiska wykonawczego WPF, mam nadzieję, że nie używają tego samego mechanizmu wykrywania używanego przez program Visual Studio, gdy zapełni on listę zestawów. Pierwsze kliknięcie „Dodaj referencję ...” stało się boleśnie powolne.

Kirk Kuykendall
źródło
3
Kilka lat temu przedstawiciel handlowy Esri powiedział mi, że Esri ma największą bibliotekę COM na świecie, znacznie większą niż cokolwiek, co nawet Microsoft zbudował. Od tego czasu zakładałem, że ta część ospałości Arcgis Desktop ładuje całą bibliotekę na raz, a nie tylko zbiera części potrzebne na żądanie.
matt wilkie
@mattwilkie Czas uruchamiania ArcMap był znacznie wolniejszy. Aby to poprawić, wprowadzono rozszerzenia „just-in-time” . Nie jestem pewien, ale myślę, że podobne podejście przyjęto w przypadku obiektów gx, które są ładowane przy pierwszym uruchomieniu okna dialogowego dodawania danych.
Kirk Kuykendall
hmm Czas uruchamiania nie jest dla mnie szybszy (oczywiście, że wychodzę z pamięci, a nie danych, więc może to być tylko percepcja). 17 od kliknięcia przycisku Arcmap 10 na pasku zadań, aż będzie gotowy do zrobienia czegoś (z wyłączoną funkcją kreatora „ładuj ostatnią mapę”). Druga sesja trwa około 12 sekund. Dzieje się tak po zastąpieniu dysku twardego C: dyskiem SSD. Quantum zajmuje 4s na pierwszy bieg i 2s na następny.
matt wilkie
@mattwilkie Tak, w tym samym czasie dodali nowe paski narzędzi itp., więc wszelkie wzrosty wydajności w samą porę prawdopodobnie nie w pełni zrekompensowały opóźnienia wynikające z nowych funkcji oprogramowania. Również inne czynniki, które należy wziąć pod uwagę: Czy uzyskuje dostęp do serwera licencji? Ile pamięci RAM? Czy to szybciej, jeśli usuniesz / zmienisz nazwę pliku normal.mxt? (przetestuj drugi raz po jego usunięciu, ponieważ ponowne uruchomienie zajmie trochę czasu). Czy zainstalowałeś dostosowania?
Kirk Kuykendall
1
Kirk: świetna odpowiedź. @mattwilkie: to prawda. Pani Office miała w pewnym momencie około 400 (+?) Obiektów COM. Myślę, że do tej pory sama GeoDatabase ma tyle. Prawda jest taka, że ​​na dobre lub na złe ESRI zwariował trochę na punkcie COM. Myślę, że na razie była to bezpieczna decyzja.
Ragi Yaser Burhum
8

Wybacz mi za wskrzeszenie wątku, ale mogę podać konkretny przykład tego, jak różnią się wrażenia użytkownika w ArcMap i QGIS.

Dzisiaj musiałem zbudować siatkę punktów z 250-metrowym odstępem w małym kraju, przypiąć siatkę punktów do wielokąta granicy kraju i powiązać wartości kilku rastrów z siatką punktów.

W ArcMap zajęło mi to około 10 minut od pobrania danych do gotowego zestawu danych. W QGIS (Wrocław) program rozbił się dwukrotnie, po prostu przycinając siatkę wielokątem, a następnie działał przez godzinę, zanim zakończył się przy trzeciej próbie. To jest na pudełku z 4 podwójnymi rdzeniami i 6 GB pamięci RAM.

Uwielbiam QGIS i denerwuje mnie używanie ArcMap, ale znajduję wiele typowych przypadków użycia, w których QGIS nie spełnia moich potrzeb.

Teraz, jeśli ktoś ma jakieś porady dotyczące dostrajania wydajności, które mogłyby rozwiązać tę lukę w wydajności, jestem cały w uszach.

Chris

iamchriskelley
źródło
uzgodnione, ale za co warto zawsze najpierw
kierować się
1
Brzmi dla mnie jak błąd. Awarie nie są miernikiem złej wydajności, ale symptomem czegoś złego. Zgłoś to ludziom QGIS
Nicklasowi Avénowi
Na jak duży obszar budujesz tę siatkę punktów? Właśnie uruchomiłem ten sam typ operacji na 57 tys. Punktów w QGIS (1.9) bez problemu.
Simbamangu,
@Simbamangu było to pole ograniczające wokół Hondurasu - około pół miliona punktów. at Nicklas_Aven: Punkt zajęty; jeśli będę miał czas na rzetelne reprodukowanie, prześlę.
iamchriskelley
6

Nie sądzę, że Arc jest napisany w .NET. Obiekty Arcobject są napisane w C ++. Arc może działać wolniej z powodu korzystania z wielu zaawansowanych GUI, narzędzi pomocniczych, dodatków itp. QGIS jest świetnym oprogramowaniem, ale brakuje mu przydatnych funkcji, które mogą być dobre dla początkujących. Nie sądzę też, aby podstawowe narzędzia lavel w ESRI (Arcobjects) były wolne. Zwykle sprowadza się do umiejętności użytkownika, jeśli użytkownik wie, jak korzystać z Arc, wcale nie jest tak wolny. Powiedziawszy to, powinienem również wspomnieć, że każde narzędzie powinno być rozpatrywane indywidualnie w odniesieniu do jego działania. Po drugie, Arc był pierwszy na scenie GIS. Po pierwsze (w stosunku do QGIS) zawsze występują błędy, a kolejna generacja jest nieco lepsza, w tym przypadku szybsza, ale to wszystko tylko moja osobista opinia.

Tomek
źródło
2
Sidenote: Podejrzewam, że przynajmniej części rdzenia ArcGIS są nadal zapisane w Fortranie (podobno jest tak szybkie, jeśli nie szybsze niż C w przypadku niektórych zadań numerycznych): Jeśli uruchomisz aplikację konsoli .NET, która korzysta z ArcObjects i naciśniesz, Ctrl+Cgdy ArcObjects wykona jakąś operację, otrzymasz wiadomość z biblioteki wykonawczej Fortran.
stakx
5
ArcObjects również nie wchodząc w szczegóły drobiazgów, opiera się na modelu COM , jednym z wczesnych frameworków interoperacyjności, i ma swoje własne obciążenia wydajnościowe, szczególnie podczas łączenia między kodem zarządzanym (np. .NET) i niezarządzanym (C ++).
blah238
4
@stakx W kodzie Fortran znajduje się narzut, przynajmniej po stronie rastrowej (Spatial Analyst). Opracowałem dodatki Fortran do SA i stwierdziłem, że zawsze działały co najmniej pięć razy szybciej. Z biegiem lat warstwy opakowań na opakowaniach na opakowaniach, które zostały zbudowane w celu zintegrowania oryginalnego kodu (z lat 70. i 80.) powodowały rosnące obciążenie wydajności Arc *.
whuber
6

Dotyczy to wydajności ArcGIS: ArcMap, ArcCatalog bardzo wolno otwiera się na nowym laptopie z dużymi zasobami? co może częściowo tłumaczyć niektóre problemy z wydajnością. Wątek ten pokazuje, w jaki sposób konfiguracja sprzętu, sieci i licencjonowania może mieć znaczący wpływ na wydajność ArcGIS. Być może niektóre z zgłaszanych różnic prędkości mogą wynikać z takich czynników, a nie z wewnętrznych różnic w możliwościach.

(Wysłany jako link do odpowiedzi, ponieważ komentarze gubią się).

Społeczność
źródło
1
Odpowiedzi i komentarze mają tutaj różne cele, Dan. Masz rację, komentarze mają status drugiej kategorii. Jednym z powodów jest podkreślenie naprawdę pomocnych odpowiedzi. Wszystko, co nie jest odpowiedzią, powinno być próbą uczynienia pytania możliwym do udzielenia odpowiedzi lub ulepszenia pytania lub odpowiedzi: to komentarz, nawet jeśli jest naprawdę genialny.
whuber
Uzgodniono, że wersja w naszych laboratoriach działa lepiej niż wersja próbna, którą uruchamiam na komputerze ...
GeoH2O
2

Pracuję z danymi na poziomie przedsiębiorstwa (np. Danymi interesującymi dla całej Turcji) i czasami po prostu sprawdzam zestaw danych, potrzebuję tego renderowania.

Jeśli chcesz poprawić swoją wydajność dzięki ArcGIS, jest kilka rzeczy, które mógłbym poradzić;

Zawsze używaj prognozowanych danych. Używaj geobaz lub ArcSDE, a postgresql działa dla mnie idealnie.

Korzystanie z geobazy plików i, jeśli to możliwe, arcsde zwiększa szybkość twoich operacji. Moje osobiste doświadczenia z QGIS i ArcMap są wręcz przeciwne. Ponieważ prawie 3 minuty zajmuje wyświetlenie 3 milionów punktów na mapie. Z drugiej strony ArcMap renderuje je w ciągu kilku sekund.

Tylko moja opinia.

Anıl Çelik
źródło
Po co renderować 3 miliony punktów? Jeśli masz na myśli, że warstwa ma 3 miliony punktów, a niektóre z nich są Twoim zdaniem, jest to również szybkie w QGIS, ale będziesz potrzebować indeksu przestrzennego. Ale zgadzam się, że QGIS może być dość trudny do zatrzymania, gdy popełnisz błąd, próbując renderować zbyt wiele geometrii. Nawet po zabiciu renderowania za pomocą esc czasami renderowane geoemtrie tam się zawieszają.
Nicklas Avén