楼 主
smartdrv为什么会加快删除文件的速度?
发表于 2005-11-05 20:07 · 中国 山东 济南 移动
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
del大文件或者deltree大量文件时效果非常明显.一直没想过这是什么原因.

简单就是美
第 2 楼
发表于 2005-11-05 20:27 · 中国 山东 济南 移动
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
第 3 楼
发表于 2005-11-05 23:39 · 中国 广东 潮州 电信
中级用户
★★
积分 240
发帖 53
注册 2005-01-21 00:00
21年会员
UID 35493
性别 男
状态 离线
第 4 楼
发表于 2005-11-06 02:25 · 中国 山东 济南 移动
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
在不加载smartdrv的情况下,删除大文件或一次性删除大量文件时的硬盘灯长亮不熄又如何解释呢.大文件的fat链表清空也得费点事儿吧.
反正加载了udma或者smartdrv后的删除文件操作瞬间就可完成.
简单就是美
第 5 楼
发表于 2005-11-06 10:03 · 中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
它的工作量可能比修改文件名大!文件越大删除文件使用的时间越多!
第 6 楼
发表于 2005-11-07 13:14 · 中国 广东 广州 海珠区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
可能是因为SmartDrv预读取硬盘的FAT表,存储在内存中,删除文件时从内存中的FAT表读取文件的实际分配地址,然后再回到硬盘上的FAT表,把要删除的文件名的首字符改写。由于从内存中读取数据比直接在硬盘上读取快得多,所以速度很快。在不装载SmartDrv情况下,每次删除一个文件时硬盘都要寻找FAT表,所以速度慢。
----====≡≡≡≡ 我的至爱,永远是
MSDOS!≡≡≡≡====----
第 7 楼
发表于 2005-11-07 16:58 · 中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re JonePeng:
确实是一篇有深度的讨论性主题,建议移动至“解答室”。
删除文件的工作量,可能会因为使用工具的不同而有所不同;在的我印象中,某些软件是只改名而不清FAT表的,大部分工具还会清文件的入口簇号,文件日期、时间、属性等也有软件会清除,也不排除有些软件会只清FAT1而不理会FAT2。就MSDOS自己提供的命令而言,del 和 deltree 的工作效率也可能会因为自身版本和所处环境的不同而出现较大差异。
至于 SmartDrv 的工作原理,我猜测可能所有硬盘读写都通过它来缓冲,所以清FAT和改名的首字符及其他操作可能都首先操作于内存中。另外,文件名并不在FAT表中,而在FDT(文件目录表,根目录文件名所在地)或者目录入口簇链表所指向的数据区(子目录文件名所在地),也因此删除大量目录比较深的文件比删除同样数量和大小的根目录文件可能会慢一些。
最后,请注意,以上言论仅止于猜测和推论,并无实据!
[ Last edited by willsort on 2005-11-7 at 18:19 ]
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 8 楼
发表于 2005-11-07 18:29 · 中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
论坛跳转: