Saya ingin tahu apakah ada persamaan yang digunakan Windows untuk menentukan berapa lama waktu yang diperlukan untuk melakukan suatu tindakan pada file, katakanlah delete, untuk menyalin, untuk menghapus, atau untuk menginstal.
Misalnya, ketika saya menghapus file, dan Windows mengatakan "Sisa waktu: 18 detik" bagaimana cara menghitung angka ini, dan menggunakan apa?
windows
file-transfer
file-management
yuritsuki
sumber
sumber
timeLeft = random(1,100);
Jawaban:
Pernahkah Anda memperhatikan bahwa biasanya itu tidak memberi Anda perkiraan di detik pertama?
Itu karena pada detik pertama, itu hanya operasi yang harus dilakukan. Kemudian, setelah beberapa saat (kecil), ia tahu berapa banyak yang sudah disalin / dihapus / etc , dan berapa lama . Itu memberi Anda kecepatan rata - rata operasi.
Kemudian, bagi sisa byte dengan kecepatan, dan Anda punya waktu untuk menyelesaikan operasi.
Ini adalah matematika sekolah dasar. Jika Anda ingin melakukan perjalanan 360 km, dan pada akhir menit pertama Anda melakukan perjalanan 1 km, berapa banyak yang dibutuhkan untuk mencapai tujuan Anda?
Nah, kecepatannya 1 km / menit. Itu 60 km / jam. 360 km dibagi 60 km / jam memberi Anda 6 jam (atau 360 km / 1 km / menit = 360 menit = 6 jam). Karena Anda sudah melakukan perjalanan selama satu menit maka perkiraan waktu yang tersisa adalah 5 jam dan 59 menit.
Ganti "perjalanan" dengan "salin" dan "km" dengan "byte" dan itu pertanyaan Anda.
Sistem yang berbeda memiliki cara yang berbeda dalam memperkirakan waktu. Anda dapat mengambil menit terakhir, dan perkiraan dapat sangat bervariasi, atau Anda dapat mengambil waktu penuh, dan jika kecepatan benar-benar berubah secara permanen, perkiraan Anda mungkin jauh dari kenyataan. Apa yang saya jelaskan adalah metode paling sederhana.
sumber
1%
diperlukantime so far * rand[0 - 10]
saat menampilkanfew seconds left
menjawab dengan lintas-perkalian sederhana sangat merendahkan saya pikir, saya yakin dia sudah tahu itu, itu adalah bagaimana kita terus-menerus menebak hal-hal di kepala kita juga.
Masalah dengan bilah kemajuan operasi file adalah bahwa itu hanya benar untuk data yang seragam, jadi jika Anda menyalin 100 file yang memiliki semua ukuran yang sama dan drive Anda tidak melakukan apa-apa lagi, perkiraan kemajuan akan tepat, tetapi bagaimana jika yang pertama 99 file txt-file kecil dan yang terakhir adalah file video besar? Kemajuan akan menjadi WAY off.
Masalah ini semakin meningkat ketika Anda tidak menangani file dalam satu folder, tetapi beberapa folder. Katakanlah Anda memiliki 5 subfolder dan Anda ingin menghapusnya (ukurannya tidak terlalu penting dalam kasus ini), 4 folder pertama hanya berisi kurang dari 10 file, jadi pada saat operasi masuk ke folder ke-5 ia berpikir ini tentang 80% selesai, dan boom folder ke-5 berisi 5000 file dan kemajuan Anda melompat kembali ke 1%
WinXP mencoba untuk mengatasi ini dengan menghitung jumlah file sebelumnya yang berarti bahwa ketika folder tidak diindeks di windows, tergantung pada jumlah file, XP tidak benar-benar memulai operasi selama 20 detik pertama (waktu yang dibutuhkan untuk menghitung) yang membuat semua orang marah.
Jadi, sementara saya juga tidak memiliki pengetahuan khusus tentang bagaimana Windows melakukannya (tapi apa lagi yang ada selain menghitung file dan byte) saya harap saya bisa mengilustrasikan mengapa itu cacat dan mengapa itu tidak akan pernah sempurna.
Yang terbaik yang bisa Anda lakukan adalah tidak hanya mengandalkan filecount ATAU bytecount, tetapi buat rata-rata dari keduanya.
Atau jika Anda ingin menjadi lebih gila, OS dapat memulai basis data tentang berapa lama waktu yang diperlukan untuk operasi ini di mesin Anda dan memasukkannya ke dalam persamaan.
Pikiran terakhir: Jika seseorang berpikir tentang sistem file yang akan membuat OS tahu berapa ukuran setiap folder, tanpa menghitungnya terlebih dahulu, Anda setidaknya akan mendapatkan estimasi progres yang benar ketika menghapus seluruh folder dan bukan hanya sebagian saja.
sumber