KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销附送程

[ 14147 查看 / 51 回复 ]

其实是一个大缓存的文件复制工具。




使用Windows系统的复制/移动文件功能时,由于操作系统在底层进行时间片分割,因此文件读写操作非常频繁。

底层时间片分割本来是一件好事,可以避免某一个程序被随机的无期限阻塞。

但是,如果是在同一块物理硬盘上复制/移动文件(不通分区间),就会造成磁头快速的在读写柱面之间来回寻道,导致两大问题:
1. 噪音增加,对盘体的摩擦增加,发热增加,影响硬盘寿命。
2. 读写效率大大的降低,延长了操作时间。




针对这两个问题,我写了这个"高性能缓存复制程序",利用现在机器越配越大的内存,降低读写操作切换的频度,以求提高文件复制效率。

根据测试,在同一个硬盘的两个分区间复制文件,Windows 复制一个220MB文件用了大约50秒,本程序复制一个260MB的文件只用了40秒!


*** 升级版本提高了在同一物理硬盘的操作速度 10%
*** 升级版本提供了在不同物理硬盘的增强操作模式,提高性能一倍!


=== 第二升级版本增加了有用的快捷按钮!
=== 第二升级版本增加磁盘空间和文件大小预览!


(以下广告词)
本程序界面美观,操作方便,稳定可靠,是拥有大量的大文件收集者的居家旅行,杀人越货必备工具!


<<<<< 附送品介绍 >>>>>

64位文件切割器

由于历史原因,目前的绝大多数程序对文件的操作都限制在32位以内,由于超过4GB大文件的日益增多,导致了种种稀奇古怪的问题...

导致我做这个程序的起因是,很久以前下了一个Zip包,是一个某动画的1-26话全集,不过有个问题,这个文件超过了4G (5.8G),于是在WinRAR下打开,认为文件大小只有1.8G,导致只能解出前8话... XD

然后我又查找了N多号称支持64位Zip的程序(WinZip9, ZipForge64 ......) 但是没一个程序能够识别...估计目前64位程序还处于"战国"阶段,每家人开发一个自己的64位扩展Zip格式,也就只能解出自己的.... 但是我手头的Zip包里面没有任何特殊的标志可以识别出到底使用什么软件压缩的,只有一个标准的PK签名....

最后一个绝妙的主意出现了 - 把这个大文件分割成几个小块,这样保证WinRAR可以完整地看到整个小节的内容,然后使用修复模式把文件一部分一部分的提取出来...

但是想到了这个主意后我却Prz了....因为居然找不到一个能够支持分割大于4GB的文件的程序....于是这个程序就诞生了... XD

相信在目前情况下使用的机会不多,但是建议大家收集备用,因为一旦有需要用的时候,花上几个小时去找遍Google是比较划不来的... XD (貌似我经常做这样的事)

[Payview=32]
操作说明:

* 左边的为文件源
* 右边的为目标目录
* 中间的小鱼就是复制按钮
* 下面的托杆控制使用的缓存大小,默认16MB内存

-> 拖拉设定缓存大小
-> 在左边的文件框中选定需要复制的文件或者目录(可以Ctrl或者Shift多选) (选定的目录以及子目录下的所有文件都会被复制,包括空目录和0字节文件)
-> 在右面选定目标目录
-> 按下小鱼,自动开始复制,下方显示每一个文件的复制进度。
-> 如果任何时候希望停止操作,再按一下小鱼即可

++ 默认情况下,遇到操作错误(不能读/写文件/文件夹),或者遇到问题(覆盖文件?),程序会弹出提示框询问接下来的操作。
++ 选择"No Prompt",则程序不会弹出提示框,而是自动选择默认操作:
  + 如果不能建立目标目录,则跳过问题目录,继续复制其他文件/目录
  + 如果不能读原文件/写目标文件,则跳过问题文件,继续复制其他文件/目录
  + 如果目标文件已经存在,则跳过重名文件,继续复制其他文件/目录
  + 如果文件复制被打断(错误或者人工取消),则删除没有完成的副本

最初版本
可调窗口版本+取消确认



++++++ 升级版本 ++++++

* 首先修正了缓存写入结束时的同步磁盘操作,以前存在的问题对操作性能有影响。

  所以新的版本在同一个物理硬盘上复制文件时,性能平均比前一个版本提高10%左右。

  但是,如果在不同的物理硬盘上复制文件时,性能有所下降,这是正常现象,因为不同的情况下要使用的不同的模式才能获得最好的效果,请继续往下阅读...

* 原来窗口上不能选择的"Different HDD"现在可选!

  使用"Different HDD"模式,顾名思义,要求源文件和目标位置在不同的物理硬盘上。

  在这个模式下,指定的缓存将会被程序分成四块,当每一块被填满时,程序将会立刻开始向目标磁盘写数据,同时,读取源文件的过程将不会暂停,因此可以充分利用独立的硬件作并行操作。

  在不同的物理硬盘上复制文件时使用这个选项,将获得比前一个版本高大约一倍的性能!

  注意:程序不会对"不同的物理硬盘"这个条件做强行的要求,但是如果是往同一个硬盘上复制文件时选择该模式,那动作就和Windows本身的复制差不多了... -_-

升级版本




++++++ 本日第二次升级! ++++++

这一次增加了几个有用的按钮:

* 返回上层目录 (其实一直可以用快捷键BackSpace的,如果不知道的人就比较麻烦,还是加入好了)
* 刷新列表 (及时看到外部的改变)
* 删除 (可以直接把文件扔到回收站)

然后应要求增加了磁盘容量显示和文件大小预览:

-- Source部分 --
* 选定一个驱动器,窗口底端就会出现该分区的大小和剩余空间;
* 如果选定一个文件,则会出现这个文件的大小;

-- Destination部分 --
* 选定一个目录,这个目录所在的驱动器的大小和剩余空间就会以Hint(提示)的方式显示出来。

第二次升级版本



<<<<< 赠品 >>>>>

命令行程序...因为用到的机会少,也就没有做图形界面...XD

操作方法如下,有两种切割方法:
1> FXSplit <输入文件> <输出文件> <开始切割位置> <切割长度>
2> FXSplit <输入文件> <输出文件> <开始切割位置> - <结束切割位置>
(注意 第二种 开始和结束之间有一个减号)

upload/KFCFile8274_FXSplit.rar

比如你有一个 6G 的文件: C:\test.bin

如果你想从第 4.5G 的地方提取出1G的东西,目前的能找到切割软件是基本没有办法的(至少我没有找到过)。
使用赠品,有两种方法:

1. 从第 4.5G 的地方开始,提取出1G:
> FxSplit C:\test.bin Z:\test.parts.bin 4831838208 1073741824

解释:
源文件 - C:\test.bin
目标文件 - Z:\test.parts.bin
开始位置 - 4831838208 (4.5G)
截取长度 - 1073741824 (1G)

(注意,强烈推荐将目标文件放在和源文件不在同一个物理硬盘的分区上,原因就不用解释了吧)


2. 从第 4.5G 的地方开始提取,直到5.5G的地方:
> FxSplit C:\test.bin Z:\test.parts.bin 4831838208 - 5905580032

解释:
源文件 - C:\test.bin
目标文件 - Z:\test.parts.bin
开始位置 - 4831838208 (4.5G)
模式标志 - -
结束位置 - 5905580032 (5.5G)

(注意,强烈推荐将目标文件放在和源文件不在同一个物理硬盘的分区上,原因就不用解释了吧)


[/Payview]
分享 转发
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

以下引用scegg在2006-1-20 16:54:11的发言:
程序可能导致碎片众多,请测试后再决定。


降低读写的次数应该和文件的碎片没有关系吧...就算有影响,也只能是降低碎片吧....|||||||

磁盘的位图是由文件系统管理的,只有不停的关闭打开文件再续写才会造成分配策略的不连续——我的程序在写完之前,文件始终保持打开状态。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

Prz... 不要激动...我还没说完...

我的测试硬盘是 5400RPM的,而且接在USB2.0口上,并且每个分区都有80%使用中...

而且...请仔细读清楚,是在同一个物理硬盘上哦,如果是在两个不同的硬盘上的话,我的复制1GB也才35秒哦...
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

哦,还有....集成系统已经是上一个时代的做法了....现在提起“集成”,给人更多的联想是Spyware(间谍程序)...


现在流行的是"绿色软件",高效,简洁,不占宝贵的系统资源......为了减少开机登陆后硬盘狂响一秒钟,大家什么事情都干得出来,何必还要无谓的增加启动时间呢?

在同一硬盘大量的移动文件也不是经常要做的事,最优化的解决方案应该是为最普遍的情况考虑的,所以绿色软件>>集成软件!哈哈哈哈!
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

以下引用紗紗在2006-1-20 17:00:59的发言:
我的能续传喔~

可以控制程序优先级喔~

有记录文件喔~

你40s我才10s都不到喔!



顺便再批一下,调整优先级明显是画蛇添足...

首先,这个"调整优先级功能"的作者对文件系统的操作原理都没有搞清楚。

文件系统操作的绝大部分时间,是花在I/O等待上的,就算复制几十个GB的文件,真正程序运行的时间不会超过20秒!
所以,调整优先级不会带来可以察觉出的性能改变。
如果你的文件复制程序因为优先级的改变而产生明显的性能变化,就证明这个程序执行效率非常的低,导致占用了比较多的CPU时间。



其次,使用低优先级的长时间I/O程序有可能导致其他程序的性能下降!

这个特殊现象叫做优先级逆转,具体机理比较复杂,希望对这方面了解更多的,可以去Google Scholar上面查阅操作系统调度(OS Scheduling)相关的论文。

简单的说,形成这种现象的原因就是,程序进行IO操作时需要靠CPU中断来激活睡眠的进程以继续运行。当低优先级进程进行大量的IO操作时,许多中断产生后不能及时地激活睡眠的进程(因为低优先级),这样累计的较多的中断后,当高优先级的进程需要进行I/O操作时,就会需要等候更长的时间...... XD



接下来...续传....搞不清楚这个功能到底有什么用...
难道你会在文件复制一半的时候关机或者注销?
然后第二天开机后想起来了再续传?
万一想不起来了呢?XD



最后,提一个愚蠢的问题:

谁会有闲心去给只运行一两分钟的程序调优先级? XD
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

以下引用紗紗在2006-1-20 17:45:57的发言:

同区10s
可选择不嵌入
处理线程优先,这个在你边听音乐边游戏边复制的时候是非常有用的,这也是为什么10s甚至1G 3s都不到的原因
还有,早就有预设这种东西了(你的想法太落后了吧)


哦,复制1G文件只需要3秒不到啊。
要是费米实验室的工程师能看懂你的话,估计就会抱着100万美金哭着找你要代码了.....

那你还在这里跟可怜巴巴得我抢什么KP呢?


顺便提一下 最新的SATA2.0 接口速度也才300MB/sec....
都不知道怎么形容你了...毫不容易想起了一句:

猿人造摩托——不懂科学
(要用川普来读才比较押韵...XD)
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

以下引用03534在2006-1-21 20:05:04的发言:
程序窗口大小不能随意控制……
orz


意义不大吧.... 如果你需要控制的话我可以直接改掉窗口属性为Sizable就行了...

但是,就像我说过的,如果这个程序一星期只用3分钟的话,估计没有谁会去关心窗口上有多少花哨的控件、能不能调优先级、可不可以调整窗口大小....

顺便预告最近准备推出的升级版:
1. 支持拖放,只需要把源文件从Expolrer拖放到窗口,程序就会自动把源设定到该目录并选定这些文件,你只需要选定目的地,然后按下小鱼就行了

2. Different HDD模式将可选择,如果你的源和目标是不同的物理硬盘,选择这个将会极大地提高复制速度(约为同的HDD的两倍)

3. 增加取消操作确认 - 这样也就相当于增加了暂停、继续功能,这个功能在某些特殊情况下非常有用——比如复制过程中,另一个应用程序突然开始大量的操作源或者目标磁盘,造成效率成倍下降,这个时候只要人工暂停等待其他的程序操作完成后再继续,可以节约至少一倍的时间。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

以下引用闇雨の绝在2006-1-21 10:57:37的发言:
赠送品怎么用,给个实例~


比如你有一个 6G 的文件: C:\test.bin

如果你想从第 4.5G 的地方提取出1G的东西,目前的能找到切割软件是基本没有办法的(至少我没有找到过)。
使用赠品,有两种方法:

1. 从第 4.5G 的地方开始,提取出1G:
> FxSplit C:\test.bin Z:\test.parts.bin 4831838208 1073741824

解释:
源文件 - C:\test.bin
目标文件 - Z:\test.parts.bin
开始位置 - 4831838208 (4.5G)
截取长度 - 1073741824 (1G)

(注意,强烈推荐将目标文件放在和源文件不在同一个物理硬盘的分区上,原因就不用解释了吧)


2. 从第 4.5G 的地方开始提取,直到5.5G的地方:
> FxSplit C:\test.bin Z:\test.parts.bin 4831838208 - 5905580032

解释:
源文件 - C:\test.bin
目标文件 - Z:\test.parts.bin
开始位置 - 4831838208 (4.5G)
模式标志 - -
结束位置 - 5905580032 (5.5G)

(注意,强烈推荐将目标文件放在和源文件不在同一个物理硬盘的分区上,原因就不用解释了吧)
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销

恩,楼上的可以用3秒Copy 1GB的数据,还有什么不能的.... -_-|||||||||||

你果然也要“暂停”了么┓( ̄▽ ̄|||)┏不是说垃圾功能么?


哈,你得好像是神奇的拷贝中可以关机,"开机自动续传"吧...当然是垃圾功能了...
飛べない翼に、意味はあるんでしょうか?
TOP