Я хотел бы узнать, что нужно для создания пользовательской реализации функции ArcGIS. В частности, я хотел бы реализовать GeoAnalyst.ISurfaceOp2.Visibility (), чтобы он работал быстрее. Прямо сейчас на вызов Visibility () уходит ~ 3 секунды. Из моего ограниченного понимания узким местом является запись временных растров в файловую систему. Если бы это можно было сделать в памяти, я подозреваю, что время обработки значительно уменьшится. Я делаю это в .NET-проекте, но приветствуются решения на любом языке.
arcgis-10.0
arcobjects
.net
algorithm
Росс Фурман
источник
источник
Ответы:
Этот ответ увековечивает и расширяет некоторые обсуждения в комментариях. RAM диск эмулирует диск внешнего диска , используя некоторые из оперативной памяти в вычислительной системе. Он может читать и записывать со скоростью, сравнимой с кэшированием в памяти, за исключением небольших накладных расходов на протоколы перевода для преобразования дисковых команд в команды, ориентированные на память. Диск RAM создается с помощью специального программного обеспечения уровня операционной системы, «драйвера устройства». Диски с открытым исходным кодом и бесплатные ОЗУ доступны для многих операционных систем, включая Windows.
Поэтому одним из способов устранения узкого места из-за промежуточного дискового ввода-вывода является установка ОЗУ (при необходимости, покупка дополнительной ОЗУ) и размещение там папки с данными. (Обычно это программная настройка.)
Другой вариант заключается в установке высокопроизводительного твердотельного устройства DRAM (SSD), которое по сути представляет собой блок оперативной памяти в отдельной упаковке с электронным интерфейсом, действующим как дисковод. Он устанавливается в вычислительную систему вместо дисковода и будет вести себя точно так же, как другой диск без какого-либо дополнительного программного обеспечения, но будет читать и записывать почти так же быстро, как доступ к памяти. Это относительно дорого, но, вероятно, нужен только маленький, даже для очень большого промежуточного растрового хранилища.
Прежде чем предпринимать какие-либо из этих шагов, важно составить профильпроцесс, чтобы определить, где на самом деле находится узкое место. (В последние годы Windows поставляется со все более мощными приложениями для профилирования и мониторинга, которые доступны в Win 7 в виде пары Диспетчер задач / Монитор ресурсов и, конечно, многие аналогичные приложения доступны и для других ОС.) Многие системы настраиваются автоматически, или можно настроить для кэширования чтения и записи на диск в ОЗУ на короткие периоды времени. Кэширование работает почти так же, как RAM-диск, но, вероятно, даже быстрее: программное обеспечение считает, что оно записывает промежуточные файлы на диск, но операционная система сначала записывает их временно в RAM, не обращаясь к диску, в надежде, что скоро те же данные будет прочитан и удален, и в этом случае физическая запись никогда не понадобится.
Учитывая объем вычислений, необходимый для любого вычисления полной видимости (в простом алгоритме каждую ячейку необходимо проверять на предмет видимости один раз для каждой точки обзора), следует, по крайней мере, подозревать, что проблема может заключаться в скорости вычислений, а не в дисковых операциях ввода-вывода. Вот. Если это так, то диски RAM или SSD будут пустой тратой времени и денег. Вместо этого, усилия должны быть направлены на анализ и улучшение основного алгоритма .
Некоторое обсуждение того, помогает ли производительность RAM-диска ArcGIS, появилось в другом потоке .
источник
К сожалению, вы не можете настроить IRasterAnalysisEnvironment для работы с рабочей областью в памяти.
Эта тема решает проблему.
источник