Je voudrais savoir ce qu'il faut pour créer une implémentation personnalisée d'une fonction ArcGIS. En particulier, je voudrais implémenter GeoAnalyst.ISurfaceOp2.Visibility () afin de le faire fonctionner plus rapidement. À l'heure actuelle, cela prend environ 3 secondes par appel à Visibility (). D'après ma compréhension limitée, le goulot d'étranglement est l'écriture de rasters temporaires dans le système de fichiers. Si cela pouvait se faire en mémoire, je soupçonne que le temps de traitement diminuerait considérablement. Je fais cela dans un projet .NET, mais les solutions dans n'importe quelle langue sont les bienvenues.
arcgis-10.0
arcobjects
.net
algorithm
Ross Fuhrman
la source
la source
Réponses:
Cette réponse commémore et développe une partie de la discussion dans les commentaires. Un disque RAM émule un lecteur de disque externe en utilisant une partie de la RAM dans un système informatique. Il peut lire et écrire à des vitesses comparables à la mise en cache en mémoire, moins un peu de surcharge pour les protocoles de traduction pour convertir les commandes orientées disque en commandes orientées mémoire. Un disque RAM est créé en exécutant un logiciel spécial au niveau du système d'exploitation, un «pilote de périphérique». Des disques RAM open source et gratuits sont disponibles pour de nombreux systèmes d'exploitation, y compris Windows.
Par conséquent, une façon d'accélérer un goulot d'étranglement dû aux E / S de disque intermédiaires consiste à configurer un disque RAM (en achetant la RAM supplémentaire si nécessaire) et à y placer le dossier de travail. (Il s'agit généralement d'un paramètre logiciel.)
Une autre option consiste à installer un dispositif SSD (SSD) haut de gamme , qui est essentiellement un bloc de RAM dans un emballage séparé avec une interface électronique pour agir comme un lecteur de disque. Il s'installe dans un système informatique à la place d'un lecteur de disque et se comportera exactement comme un autre lecteur de disque sans aucun logiciel supplémentaire, mais lira et écrit presque aussi rapidement que les accès à la mémoire. Celles-ci sont relativement chères, mais il est probable qu'une seule petite soit nécessaire, même pour un stockage raster intermédiaire très volumineux.
Avant de prendre l'une de ces étapes, il est important de profilerle processus pour déterminer où se trouve réellement le goulot d'étranglement. (Windows a été livré avec des applications de profilage et de surveillance de plus en plus puissantes ces dernières années, disponibles dans Win 7 en tant que paire Gestionnaire des tâches / Moniteur de ressources, et bien sûr, de nombreuses applications similaires sont également disponibles pour d'autres systèmes d'exploitation.) De nombreux systèmes sont configurés automatiquement, ou peut être configuré pour mettre en cache les lectures et écritures sur disque dans la RAM pendant de courtes périodes. La mise en cache fonctionne presque comme un disque RAM, mais est probablement encore plus rapide: le logiciel pense qu'il écrit des fichiers intermédiaires sur le disque, mais le système d'exploitation les écrit temporairement en RAM d'abord, sans accéder au disque, dans l'espoir que bientôt les mêmes données sera relue et supprimée, auquel cas une écriture physique ne sera jamais nécessaire.
Étant donné la quantité de calcul nécessaire pour tout calcul de visibilité complète (dans un algorithme naïf, chaque cellule doit être inspectée pour la visibilité une fois pour chaque point de vue), on devrait au moins soupçonner que la vitesse de calcul, et non les E / S disque, peut être le problème ici. Si tel est le cas, les disques RAM ou SSD seront une perte de temps et d'argent. Au lieu de cela, l'effort devrait être dirigé vers l' analyse et l'amélioration de l'algorithme sous-jacent .
Une discussion sur la question de savoir si les performances du disque RAM aident ArcGIS est apparue dans un autre thread .
la source
Malheureusement, vous ne pouvez pas configurer IRasterAnalysisEnvironment pour qu'il fonctionne avec un espace de travail en mémoire.
Ce fil résout le problème.
la source