Saya ingin mencari tahu apa yang diperlukan untuk membuat implementasi kustom dari fungsi ArcGIS. Secara khusus, saya ingin mengimplementasikan GeoAnalyst.ISurfaceOp2.Visibility () untuk membuatnya berjalan lebih cepat. Saat ini, dibutuhkan ~ 3 detik per panggilan ke Visibilitas (). Dari pemahaman saya yang terbatas, bottleneck adalah penulisan raster sementara ke sistem file. Jika ini bisa dilakukan dalam memori, saya curiga waktu pemrosesan akan berkurang secara signifikan. Saya melakukan ini dalam proyek .NET, tetapi solusi dalam bahasa apa pun dipersilakan.
arcgis-10.0
arcobjects
.net
algorithm
Ross Fuhrman
sumber
sumber
Jawaban:
Jawaban ini mengenang dan memperluas beberapa diskusi dalam komentar. Sebuah RAM disk mengemulasi drive disk eksternal menggunakan beberapa RAM dalam sistem komputasi. Ia dapat membaca dan menulis dengan kecepatan yang sebanding dengan caching di memori, dikurangi sedikit overhead untuk protokol terjemahan untuk mengubah perintah yang berorientasi disk ke perintah yang berorientasi pada memori. Disk RAM dibuat dengan menjalankan perangkat lunak tingkat sistem operasi khusus, "driver perangkat." Open source dan disk RAM gratis tersedia untuk banyak sistem operasi, termasuk Windows.
Oleh karena itu, salah satu cara untuk mempercepat kemacetan karena disk I / O perantara adalah dengan mengatur disk RAM (membeli RAM tambahan jika perlu) dan meletakkan folder awal di sana. (Ini biasanya merupakan pengaturan perangkat lunak.)
Pilihan lain adalah menginstal DRAM high-end state state device (SSD), yang pada dasarnya adalah blok RAM dalam kemasan terpisah dengan antarmuka elektronik untuk bertindak seperti disk drive. Itu menginstal dalam sistem komputasi di tempat disk drive dan akan berperilaku persis seperti disk drive lain tanpa perangkat lunak tambahan, tetapi akan membaca dan menulis hampir secepat akses memori. Ini relatif mahal, tetapi kemungkinan hanya yang kecil diperlukan bahkan untuk penyimpanan raster menengah yang sangat besar.
Sebelum mengambil langkah-langkah ini, penting untuk membuat profilproses untuk memastikan kemacetan sebenarnya. (Windows telah dikirim dengan profil yang semakin kuat dan aplikasi pemantauan dalam beberapa tahun terakhir, tersedia di Win 7 sebagai pasangan Task Manager / Resource Monitor, dan tentu saja banyak aplikasi serupa juga tersedia untuk OS lain.) Banyak sistem yang secara otomatis dikonfigurasi, atau dapat dikonfigurasi, untuk cache disk membaca dan menulis dalam RAM untuk waktu yang singkat. Caching bekerja hampir sama dengan disk RAM, tetapi mungkin bahkan lebih cepat: perangkat lunak berpikir itu menulis file perantara ke disk, tetapi OS menulisnya sementara untuk RAM pertama, tidak mengakses disk, dengan harapan bahwa segera data yang sama akan dibaca kembali dan dihapus, dalam hal ini penulisan fisik tidak akan pernah diperlukan.
Mengingat jumlah perhitungan yang diperlukan untuk perhitungan visibilitas penuh (dalam algoritma naif, setiap sel harus diperiksa untuk visibilitas satu kali untuk setiap sudut pandang), orang harus setidaknya menduga bahwa kecepatan komputasi, bukan disk I / O, mungkin menjadi masalah sini. Jika demikian, disk RAM atau SSD akan membuang-buang waktu dan uang. Sebaliknya, upaya harus diarahkan untuk menganalisis dan meningkatkan algoritma yang mendasarinya .
Beberapa diskusi tentang apakah kinerja disk RAM membantu ArcGIS telah muncul di utas lainnya .
sumber
Sayangnya, Anda tidak dapat mengatur IRasterAnalysisEnvironment untuk bekerja dengan ruang kerja di-memori.
Utas ini membahas masalah ini.
sumber