Dari pengamatan saya sebagai pengembang Java yang bekerja pada workstation Windows, NTFS lebih lambat dibandingkan dengan sistem file Linux. Pertanyaannya adalah, apakah ada sesuatu dalam driver NTFS yang dapat disetel secara manual, misalnya memberikan lebih banyak memori untuk cache? Aktifkan beberapa algoritma eksperimental? Jika itu tidak tersedia, apakah mungkin ada sistem file lain yang dapat digunakan pada Windows, bahkan mungkin komersial, itu lebih cepat daripada NTFS?
Untuk lebih jelasnya, saya tidak ingin meningkatkan kecepatan kompilasi untuk proyek Maven, saya ingin mendapatkan peningkatan keseluruhan untuk OS. Saya merasa bahwa NTFS sudah lama usang dan lambat dibandingkan dengan sistem file Linux. Saya merasa aneh bahwa OS paling populer di planet ini hanya memiliki satu sistem file yang masih memerlukan defragmentasi manual. Mungkin ada adalah alternatif?
Pembaruan: Inilah yang lambat menurut pengamatan saya. Saya sedang membangun / mengemas proyek, yang berarti banyak operasi baca / tulis pada disk. Sistem build adalah cross-platform (Java, Maven), jadi saya bisa melakukan tindakan yang persis sama ketika boot ke Ubuntu, misalnya.
Di Linux build saya setidaknya 1/3 lebih cepat. Maka pertanyaan tentang sistem file. Maaf jika salah tempat.
Jawaban:
Sementara saya ingin melihat sesuatu seperti ZFS tersedia untuk host Windows, NTFS bukan sistem file yang mengerikan. Ini mendukung sebagian besar fitur sistem file "modern" (atribut yang diperluas, penjurnalan, ACL, sebut saja), tetapi terhambat oleh Explorer dan sebagian besar aplikasi lain tidak mendukung semua ini.
Satu hal yang benar-benar akan mematikan kinerjanya adalah memiliki entri "terlalu banyak" dalam direktori. Setelah Anda melewati beberapa ribu entri dalam satu direktori, semuanya melambat menjadi perayapan. Secara harfiah seluruh mesin akan berhenti menunggu NTFS untuk membuat atau menghapus entri ketika ini terjadi.
Saya dulu bekerja dengan aplikasi yang menghasilkan dokumen berbasis HTML untuk .NET assemblies; itu akan membuat satu file per properti, metode, kelas, namespace, dll. Untuk majelis yang lebih besar kita akan melihat 20 + k file, semuanya dengan baik dibuang ke direktori tunggal. Mesin akan menghabiskan beberapa jam selama pembangunan diblokir di NTFS.
Secara teori, Windows mendukung plugin filesystem, yang memungkinkan ZFS asli, ext3, atau apa pun (bahkan FUSE). Dalam praktiknya, API tidak berdokumen, sehingga Anda sepenuhnya mandiri.
Sekarang, karena Anda melakukan pengembangan Java, dapatkah Anda menginstal OS yang berbeda pada mesin Anda, atau menggunakan VM di atas Windows?
Juga, Anda mungkin ingin mencoba beberapa tolok ukur filesystem platform-independen (iozone, bonnie ... mungkin ada yang lebih modern saya tidak tahu dari atas kepala saya, mungkin bahkan beberapa ditulis di Jawa) untuk melihat apakah itu sebenarnya filesystem menahan Anda, atau jika itu sesuatu yang lain. Optimalisasi prematur dan semua itu ...
sumber
Saya kira solusi sebenarnya adalah menulis ulang sistem build Anda sehingga menggunakan API sistem file windows asli, alih-alih API unix (fopen dll) itu sendiri di bawah kerangka portabilitas. Tapi itu tidak akan terjadi, jadi pada dasarnya Anda terjebak dengan tingkat kinerja apa pun yang mereka pikir dapat diterima.
Seringkali ketika menggunakan sistem yang awalnya tidak ditulis untuk Windows, Anda menemukan bahwa direktori traversal telah ditangani dengan sangat buruk, jadi pastikan Anda memiliki pohon direktori yang sangat datar.
sumber
Ada satu sistem file yang didukung oleh OS Windows baru DAN lebih cepat dari NTFS. Itu exFAT. Ada kemungkinan untuk menggunakannya untuk drive sistem. Tetapi tidak diketahui komplikasi apa yang mungkin terjadi.
Anda tentu dapat menggunakannya untuk partisi lain. Lebih cepat dengan operasi baca / tulis acak. Sempurna untuk SSD misalnya.
sumber
opendir()
(atau yang setara).Apakah Anda memiliki program anti virus yang sedang berjalan yang memeriksa akses / tulis untuk folder proyek Anda?
Kompilasi melibatkan membaca dan menulis banyak file kecil secara berurutan, yang dapat membanjiri pemindai virus. Tambahkan folder proyek Anda ke daftar folder yang dikecualikan dan lihat apakah itu memperbaiki situasi.
Di Linux Anda (mungkin) tidak memiliki perangkat lunak anti virus ....
sumber