KeyFansClub

首页 » - 特色讨论区 - » 键社茶餐厅 » [再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销附送程
紗紗 - 2006/1/22 11:38:00
以下引用Prz在2006-1-22 0:26:23的发言:


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

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

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

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

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


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

拖放[em34]果然要跟着偶走吧[em46]
03534 - 2006/1/22 11:39:00
不厚道的继续报告不足……
窗口大小随能随意调节大小,
但不能记忆,每次打开程序的时候还是要调节………… - -b
不可能每次都要调一下大小吧……

另外建议能加上目标磁盘空间剩余大小……
免得总是先要看看硬盘空间剩余大小,再跑去启动程序……(方便硬盘空间经常爆满的人……这里貌似有不少吧……)
(某比较白……建议都是从程序的友好、方便上面考虑的…………)
紗紗 - 2006/1/22 11:41:00
以下引用03534在2006-1-22 11:39:18的发言:
不厚道的继续报告不足……
窗口大小随能随意调节大小,
但不能记忆,每次打开程序的时候还是要调节………… - -b
不可能每次都要调一下大小吧……

另外建议能加上目标磁盘空间剩余大小……
免得总是先要看看硬盘空间剩余大小,再跑去启动程序……(方便硬盘空间经常爆满的人……这里貌似有不少吧……)
(某比较白……建议都是从程序的友好、方便上面考虑的…………)


别用了!来找偶要个就是!方便好用!有你所有需要的!
Prz - 2006/1/22 11:52:00
恩,楼上的可以用3秒Copy 1GB的数据,还有什么不能的.... -_-|||||||||||

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


哈,你得好像是神奇的拷贝中可以关机,"开机自动续传"吧...当然是垃圾功能了...
Tenlix - 2006/1/22 11:57:00
争论已经持续到第三天了么……
Prz - 2006/1/22 11:58:00
以下引用03534在2006-1-22 11:39:18的发言:
窗口大小随能随意调节大小,
但不能记忆,每次打开程序的时候还是要调节………… - -b
不可能每次都要调一下大小吧……


要跨进程保存数据就需要操作注册表或者使用ini文件...我的目标是纯绿色软件,因此不会加入这个功能...

不过有一个办法可以比较快速的调到不错的大小,那就"最大化"按钮... ^o^


另外建议能加上目标磁盘空间剩余大小……
免得总是先要看看硬盘空间剩余大小,再跑去启动程序……(方便硬盘空间经常爆满的人……这里貌似有不少吧……)
(某比较白……建议都是从程序的友好、方便上面考虑的…………)


这个建议不错,接下来就加入!
03534 - 2006/1/22 12:01:00
以下引用紗紗在2006-1-22 11:41:51的发言:
别用了!来找偶要个就是!方便好用!有你所有需要的!
找个厚道一些,不会经常RP的网络空间上传再说……
或者关掉你的那个耍人的QQ秘书再说……
我搞了半天,就把第一个下回家……
运行后还报错…………
[em34]······

消费者的眼睛总是雪亮的………………
[em34]······
scegg - 2006/1/22 12:26:00
如果要复制大量的数据,建议看看目前最新的几个技术点(来自多家公司产品和研究机构):

1 使用底层方式,直接控制硬盘驱动层甚至直接控制硬盘动作(部分系统不允许,而且需要对不同硬盘规格分别编写代码)
2 使用Smart I/O技术(Diskeeper),激活该技术以后,操作硬盘将不会影响用户其它操作,当软件检测到用户需要对硬盘读写的时候,将自动暂停,并在空闲时恢复。比如Diskkeeper可以同时打开多个磁盘的整理,而系统不会全部都动作。
3 使用可选择的整合技术,即可以独立执行,又可以嵌入到系统中。
4 使用NTFS散列文件方式,或者使用快速预分配硬盘空间的API,避免复制文件产生的碎片。

如果谈什么线程优先级、大缓存什么的,建议看看上个世纪就有个一个TotalCopy,那个软件在98下就有了,而且也支持断点再COPY,支持关机恢复什么的。
引用大史记的话……“咋怎旧的,整点新的”
Prz - 2006/1/22 12:46:00
以下引用scegg在2006-1-22 12:26:45的发言:
如果要复制大量的数据,建议看看目前最新的几个技术点(来自多家公司产品和研究机构):

1 使用底层方式,直接控制硬盘驱动层甚至直接控制硬盘动作(部分系统不允许,而且需要对不同硬盘规格分别编写代码)
2 使用Smart I/O技术(Diskeeper),激活该技术以后,操作硬盘将不会影响用户其它操作,当软件检测到用户需要对硬盘读写的时候,将自动暂停,并在空闲时恢复。比如Diskkeeper可以同时打开多个磁盘的整理,而系统不会全部都动作。
3 使用可选择的整合技术,即可以独立执行,又可以嵌入到系统中。
4 使用NTFS散列文件方式,或者使用快速预分配硬盘空间的API,避免复制文件产生的碎片。

如果谈什么线程优先级、大缓存什么的,建议看看上个世纪就有个一个TotalCopy,那个软件在98下就有了,而且也支持断点再COPY,支持关机恢复什么的。
引用大史记的话……“咋怎旧的,整点新的”


赫赫,可惜的是,这些技术都用在高性能的集成环境里面,比如Web服务器,数据库,硬盘整理......

像Copy一个文件,而且还是在同一个物理磁盘,而且还是万转以下的,而且还不支持NCQ的......干这种事情的都是像我一样的穷光蛋罢了...

况且在这样弱的一个硬件环境下:
用256MB缓存来帮助整理硬盘磁头的操作提升25%的性能
用上面的天花烂醉的技术估计也就提高30%的性能

...谁会花如此大的精力把如此高技术含量的东西用在一个如此弱的硬件上来获得每周节约大约几十秒钟的时间的效果?
scegg - 2006/1/22 12:54:00
不过,看到你们为了那么一点小事情都能争论起来,以为是那种不考虑经济,只是去追求极限技术的人……
Prz - 2006/1/22 13:06:00
哦,对了,楼上还有一个误解,就是复制文件就一定会产生碎片。

其实,在一般的情况下,复制文件是不会产生碎片的,因为我们这些穷人一般都是一次复制一个文件,不会同时进行其他的写操作——普通的万转以下、不支持NCQ的IDE硬盘,要达到理想的速度只能一次干一件事情,如果一个硬盘的操作序列里面同时有两个任务或更多,磁头就会来回交错的执行,导致效率程指数式下降...

我的程序解决的仅仅是一个非常特殊的情况,那就是,在同一个物理硬盘上复制一个文件(仅有这一个操作)。尽管高级操作只有一个,但是对于底层硬件来说,操作序列里面就同时有两个任务,一个读一个写。

这样整个过程的时间就不仅仅是读和写的时间,而是 读+写+(寻道*N) 而Windows提供的复制过程,这个N非常的大,因此速度非常的慢,我的程序的目的就是,减少这个N的值,使整个操作速度接近于硬盘本身的读写速度。

(所以说,和楼上说的什么碎片不碎片完全不沾边)



再说极限速度吧...

打个比方,复制一个 800MB 的文件,硬盘读需要30秒,写需要25秒,寻道一次需要10ms
如果用Windows,估计整个过程需要来回切换上百次,就算800次吧:

30s读 + 25s写 + (10ms * 800 * 2)
= 55s + 16s = 71s

如果使用256MB的缓存,整个过程需要切换4次:

30s读 + 25s写 + (10ms * 4 * 2)
= 55s + 80ms =(约等于) 55s

就算其他的这个技术那个技术再强,硬盘的纯读写时间是改变不了的,最多也就是把那个 80ms 变成 20ms ....

(再次说明: 因为整个过程中没有在同一个磁盘进行其他的写操作,因此不涉及产生碎片问题)
碇 - 2006/1/22 13:20:00
底层文件操作还是一样的,就是一次性多吃点内存来获得速度么-v-
其实应该不会差多少,资源充足的时候,普通的复制也会使用很大的缓存(幻觉?)
碎片什么倒应该是一样的= =
盘够空就没问题,比较满就难说……
<----这人习惯是总是装完什么就碎片分析,发现常用的文件碎片厉害往往是拖到别的盘再拖回来orz,也没什么大不了……
DuskDisciple - 2006/1/22 13:21:00
汗……
大大们还在吵啊……
scegg - 2006/1/22 13:32:00
呵呵,孩子们,加油做。
紗紗 - 2006/1/22 14:00:00
问题是她的还在不断完善,而我的早就在她前面等着┓( ̄▽ ̄|||)┏


某…………只是你背运而已……………………每次都在我开秘书的时候上[em34]
scegg - 2006/1/22 14:10:00
41楼正解。

Server家族的系统均支持打开大缓存支持。所有的复制操作都会使用所有可用的内存进行缓存。缺点就是复制大文件的时候搞不好就会可用内存不够。
Rinrin - 2006/1/22 16:05:00
不管怎么说
我都要支持Misha!!!
Prz - 2006/1/22 17:16:00
以下引用scegg在2006-1-22 14:10:21的发言:
41楼正解。

Server家族的系统均支持打开大缓存支持。所有的复制操作都会使用所有可用的内存进行缓存。缺点就是复制大文件的时候搞不好就会可用内存不够。


其实并不是Server独有的功能,XP和2003里面系统属性里面内存分配策略都可以选择使用更多内存优先作为缓存...

但是...Windows在内存管理方面有的时候的确是非常的愚蠢...我都不好说了....当选择使用更多内存优先作为缓存时,在连续复制大量的大文件(>1G)时会可能产生连锁恶性反应...

1. Windows尽量的把物理内存分配给文件系统,当现有的空闲内存分配完后,就会开始将后台程序以及部分的核心内存转移到交换文件上(也有可能那些内存本来是干净的,也就顺便被Windows利用了)

2. 这个时候,有一些程序开始请求一些交换出去的页,但是内存已经被占用满,然后Windows就把部分占用的内存页写出到交换文件,然后把需要的页读回来

* 问题出现了,愚蠢的Windows居然不知道在这种情况下减少分配给文件系统的缓存,以减少再次发生页面错误....而且更加过分的是,有的时候它居然把分配给文件系统的缓存也"交换"到了交换文件上!

* 让我们来看看这种情况下的硬盘操作:
  文件复制
  1. 文件读取
  2. 交换文件写 (老的缓存页交换出)
  3. 交换文件读 (出现页面错误的缓存页交换入)
  4. 文件写
  其他进程
  1. 交换文件写 (老的缓存页交换出)
  2. 交换文件读 (出现页面错误的缓存页交换入)

一个小小的IDE硬盘操作队列里面居然有6个任务.....这个时候硬盘已经开始狂响,而每个任务的执行速度估计也就下降到几百K每秒....因为部分内核被交换出,因此,用不了多长时间,有几页的核心内存出现页面错误,于是再雪上加霜...因为核心部分的代码多涉及中断,因此系统中断队列阻塞——出现这种情况就比较的明显了,因为你的鼠标已经开始反应不灵活,最后干脆就停下来不动了....

于是整个系统就处于典型的连锁恶性反应(Thrashing)中,少则几十秒,多则几分钟,这段时间对键盘、鼠标、网络等等的输入均无反应.....等到系统恢复反应时,一般来说所有的TCP连接早就超时中断了....


这是典型的因为内存管理不善造成的后果,在256MB内存下反应最强烈(像当年刻录机保护技术还不成熟,因此烧飞了无数的DVD-R),1G内存下也不少见,包括HyperThreaded的CPU...

Server2003用了2年,XP前后用了3年,烂起来都差不多 -_-||
碇 - 2006/1/22 17:47:00
页面文件也是可以关掉不用的?-v-
否则无论是哪种复制方式,几乎占掉整个内存空间的数据读入Windows的内存管理总是会做点什么orz
只要是内存不够用,谁都不能避免吧-v-
要复制的被缓冲到硬盘不会太严重吧??倒是其他之前正运行的东西比较可能。
至少我到现在只被杀猫(其实是杀了我的内存,我便是那256orz)过,没在复制大文件过程中出现什么虚拟内存最大值太小什么的神奇事情= =(这可能是因为我不会在复制大量数据的时候还顺便看动画什么的,所以不太会有特别严重的复制过程中什么程序要请求内存的现象)
LOVEHINA-AVC - 2006/1/24 20:49:00
以下引用在2006-1-22 17:47:50的发言:
页面文件也是可以关掉不用的?-v-


不可以.NonPagedPool的内存只能占总物理内存的15%左右.在WINDOWS内核中,大内存的申请通常都是PagedPool的.你可以不使用虚拟内存,但分页的性质不会改变(即使它从来不会被换页到硬盘上)
Prz - 2006/1/25 0:46:00
以下引用LOVEHINA-AVC在2006-1-24 20:49:20的发言:

不可以.NonPagedPool的内存只能占总物理内存的15%左右.在WINDOWS内核中,大内存的申请通常都是PagedPool的.你可以不使用虚拟内存,但分页的性质不会改变(即使它从来不会被换页到硬盘上)


但是,Windows至少可以把分配给文件系统的缓存页面锁定一下嘛...将磁盘缓存交换到磁盘上是100%不合算的行为,为什么他们连这点都想不清楚... -_-|||

哦,对了,很早就发现,在Windows系统安全策略里面,内存中锁定页这个操作允许的Group居然是空的...难道这个功能一直没有被使用?(或者是RING0级别的程序不受策略限制?)
riber - 2006/1/25 12:59:00
这个真狠啊...
12
查看完整版本: [再次升级!没有最好,只有更好!] 昨天是UPS,今天是复印机... -_-b (内含独特促销附送程