Saya mencoba memilih teknologi yang tepat untuk digunakan untuk memperbarui proyek yang pada dasarnya menampilkan ribuan titik dalam grafik yang dapat diperbesar dan dapat dipindai. Implementasi saat ini, menggunakan Protovis, berkinerja buruk. Lihat disini:
http://www.planethunters.org/classify
Ada sekitar 2000 titik saat diperkecil sepenuhnya. Coba gunakan pegangan di bagian bawah untuk memperbesar sedikit, dan seret untuk menjelajah. Anda akan melihat bahwa itu cukup berombak dan penggunaan CPU Anda mungkin naik hingga 100% pada satu inti kecuali Anda memiliki komputer yang sangat cepat. Setiap perubahan ke area fokus memanggil gambar ulang ke protovis yang sangat lambat dan lebih buruk dengan lebih banyak titik yang ditarik.
Saya ingin membuat beberapa pembaruan pada antarmuka serta mengubah teknologi visualisasi yang mendasari menjadi lebih responsif dengan animasi dan interaksi. Dari artikel berikut, sepertinya pilihannya adalah antara pustaka berbasis SVG lainnya, atau pustaka berbasis kanvas:
http://www.sitepoint.com/how-to-choose-between-canvas-and-svg/
d3.js , yang tumbuh dari Protovis, berbasis SVG dan seharusnya lebih baik dalam merender animasi . Namun, saya ragu seberapa jauh lebih baik dan apa plafon kinerjanya. Untuk alasan itu, saya juga mempertimbangkan perombakan yang lebih lengkap menggunakan pustaka berbasis kanvas seperti KineticJS . Namun, sebelum saya terlalu jauh menggunakan satu pendekatan atau lainnya, saya ingin mendengar dari seseorang yang telah melakukan aplikasi web serupa dengan banyak data dan mendapatkan pendapat mereka.
Hal terpenting adalah kinerja, dengan fokus kedua pada kemudahan menambahkan fitur interaksi lain dan memprogram animasi. Mungkin tidak akan ada lebih dari 2000 titik sekaligus, dengan bilah kesalahan kecil di masing-masing titik. Memperbesar, memperkecil, dan menggeser harus dilakukan dengan mulus. Jika pustaka SVG terbaru layak dalam hal ini, maka mungkin kemudahan menggunakan d3 akan lebih besar daripada peningkatan penyiapan untuk KineticJS, dll. Tetapi jika ada keuntungan kinerja yang sangat besar untuk menggunakan kanvas, terutama untuk orang dengan komputer yang lebih lambat, maka saya pasti lebih suka pergi ke sana.
Contoh aplikasi yang dibuat oleh NYTimes yang menggunakan SVG, tetapi animasi masih dapat diterima dengan lancar: http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-compares.html . Jika saya bisa mendapatkan kinerja itu dan tidak harus menulis kode gambar kanvas saya sendiri, saya mungkin akan memilih SVG.
Saya perhatikan bahwa beberapa pengguna telah menggunakan hibrida manipulasi d3.js yang dikombinasikan dengan rendering kanvas . Namun, saya tidak dapat menemukan banyak dokumentasi tentang ini secara online atau menghubungi OP dari posting itu. Jika ada yang memiliki pengalaman melakukan implementasi DOM-ke-Kanvas ( demo , kode ) semacam ini , saya ingin mendengar dari Anda juga. Tampaknya ini adalah kombinasi yang baik untuk dapat memanipulasi data dan memiliki kontrol khusus atas cara merendernya (dan karena itu kinerja), tetapi saya bertanya-tanya apakah harus memuat semuanya ke DOM masih akan memperlambat segalanya.
Saya tahu bahwa ada beberapa pertanyaan yang mirip dengan pertanyaan ini, tetapi tidak satupun dari mereka menanyakan hal yang sama. Terima kasih atas bantuan Anda.
Tindak lanjut : implementasi yang akhirnya saya gunakan ada di https://github.com/zooniverse/LightCurves