ฉันต้องการทราบว่ามีสมการที่ Windows ใช้เพื่อกำหนดว่าต้องใช้เวลานานเท่าใดในการดำเนินการกับไฟล์พูดลบลบคัดลอกลบหรือติดตั้ง

ตัวอย่างเช่นเมื่อฉันลบไฟล์และ Windows บอกว่า "เวลาที่เหลือ: 18 วินาที" มันคำนวณเลขนี้อย่างไรและใช้อะไร
timeLeft = random(1,100);
ฉันต้องการทราบว่ามีสมการที่ Windows ใช้เพื่อกำหนดว่าต้องใช้เวลานานเท่าใดในการดำเนินการกับไฟล์พูดลบลบคัดลอกลบหรือติดตั้ง

ตัวอย่างเช่นเมื่อฉันลบไฟล์และ Windows บอกว่า "เวลาที่เหลือ: 18 วินาที" มันคำนวณเลขนี้อย่างไรและใช้อะไร
timeLeft = random(1,100);
คำตอบ:
คุณสังเกตเห็นว่าโดยปกติแล้วจะไม่ให้การประมาณใด ๆ ในวินาทีแรกหรือไม่?
นั่นเป็นเพราะในวินาทีแรกมันแค่ทำการดำเนินการที่มันต้องทำ จากนั้นหลังจากที่ (เล็ก ๆ ) ในขณะที่มันรู้เท่าใดก็คัดลอกแล้ว / ถูกลบ / etcและนานเท่าใดจึง ที่ให้ความเร็วเฉลี่ยของการทำงาน
จากนั้นหารไบต์ที่เหลือด้วยความเร็วและคุณมีเวลาที่จะทำให้การดำเนินการเสร็จสมบูรณ์
นี่คือคณิตศาสตร์ระดับประถม หากคุณต้องการเดินทาง 360 กม. และในตอนท้ายของนาทีแรกที่คุณเดินทาง 1 กม. คุณจะไปยังจุดหมายปลายทางของคุณเท่าไหร่
ความเร็วก็คือ 1 กม. / นาที นั่นคือ 60 กม. / ชม. 360 กม. หารด้วย 60 กม. / ชม. ให้คุณ 6 ชั่วโมง (หรือ 360 กม. / 1 กม. / นาที = 360 นาที = 6 ชั่วโมง) เนื่องจากคุณได้เดินทางไปแล้วหนึ่งนาทีดังนั้นเวลาที่เหลือโดยประมาณคือ 5 ชั่วโมง 59 นาที
ทดแทน "การเดินทาง" ด้วย "คัดลอก" และ "กม." ด้วย "ไบต์" และนั่นคือคำถามของคุณ
ระบบที่ต่างกันมีวิธีประมาณเวลาที่แตกต่างกัน คุณสามารถใช้เวลาในนาทีสุดท้ายและการประมาณการอาจแตกต่างกันอย่างดุเดือดหรือคุณอาจใช้เวลาเต็มและถ้าความเร็วเปลี่ยนไปอย่างถาวรจริง ๆ การประมาณการของคุณอาจอยู่ไกลเกินความเป็นจริง สิ่งที่ฉันอธิบายเป็นวิธีที่ง่ายที่สุด
1%ใช้ time so far * rand[0 - 10]ในขณะที่แสดงfew seconds left
การตอบโต้ด้วยการคูณข้ามอย่างง่ายนั้นทำให้ฉันคิดว่าฉันมั่นใจว่าเขารู้อยู่แล้วว่ามันเป็นวิธีที่เราคาดเดาสิ่งต่าง ๆ ในหัวของเราเช่นกัน
ปัญหาของแถบความคืบหน้าของการดำเนินการกับไฟล์คือมันถูกต้องสำหรับข้อมูลที่เป็นรูปแบบเดียวกันดังนั้นหากคุณคัดลอกไฟล์ 100 ไฟล์ที่มีขนาดเท่ากันทั้งหมดและไดรฟ์ของคุณไม่ทำอะไรเลยความคืบหน้าโดยประมาณจะเป็นจริง 99 ไฟล์เป็นไฟล์ txt ขนาดเล็กและไฟล์สุดท้ายเป็นไฟล์วิดีโอขนาดใหญ่? ความคืบหน้าจะถูกปิด
ปัญหานี้จะเพิ่มขึ้นอีกเมื่อคุณไม่ได้จัดการไฟล์ในโฟลเดอร์เดียว แต่มีหลายโฟลเดอร์ย่อย สมมติว่าคุณมีโฟลเดอร์ย่อย 5 โฟลเดอร์และคุณต้องการลบออก (ขนาดไม่สำคัญในกรณีนี้) โฟลเดอร์ 4 โฟลเดอร์แรกมีไฟล์น้อยกว่า 10 ไฟล์ดังนั้นเมื่อถึงเวลาที่การดำเนินการมาถึงโฟลเดอร์ที่ 5 ที่คิดว่ามันเกี่ยวกับ 80% ทำและบูมโฟลเดอร์ที่ 5 มี 5000 ไฟล์และความคืบหน้าของคุณกระโดดกลับถึง 1%
WinXP พยายามหลีกเลี่ยงสิ่งนี้โดยการนับจำนวนไฟล์ล่วงหน้าซึ่งหมายความว่าเมื่อโฟลเดอร์ไม่ได้จัดทำดัชนีใน windows ขึ้นอยู่กับจำนวนไฟล์ XP ไม่ได้เริ่มการทำงานจริงในช่วง 20 วินาทีแรก (เวลาที่ใช้ไป นับ) ซึ่งทำให้ทุกคนโมโห
ดังนั้นในขณะที่ฉันยังไม่มีความรู้พิเศษเกี่ยวกับวิธีการที่ Windows ทำ (แต่มีอะไรนอกเหนือจากการนับไฟล์และไบต์) ฉันหวังว่าฉันจะอธิบายได้ว่าทำไมมันถึงมีข้อบกพร่องและทำไมมันจึงไม่สมบูรณ์แบบ
ดีที่สุดที่คุณสามารถทำได้คือไม่ต้องพึ่งพา filecount หรือ bytecount เพียงอย่างเดียว แต่สร้างค่าเฉลี่ยจากสองสิ่งนี้
หรือหากคุณต้องการเพิ่มความบ้าคลั่งเป็นพิเศษระบบปฏิบัติการสามารถเริ่มต้นฐานข้อมูลว่าการดำเนินการเหล่านี้ใช้เวลานานแค่ไหนในอดีตบนเครื่องของคุณและปัจจัยที่เข้าสู่สมการ
ความคิดสุดท้าย: หากมีคนนึกถึงระบบไฟล์ที่จะทำให้ระบบปฏิบัติการทราบว่าทุก ๆ โฟลเดอร์มีขนาดเท่าไหร่โดยไม่ต้องคำนวณก่อนอื่นอย่างน้อยที่สุดคุณจะได้รับการประเมินความก้าวหน้าที่ถูกต้องเมื่อทำการลบทั้งโฟลเดอร์และไม่ใช่แค่ส่วนหนึ่ง