使用coldfusion或java压缩文件的最有效方法

使用coldfusion或java压缩文件的最有效方法,java,memory,coldfusion,zip,cfzip,Java,Memory,Coldfusion,Zip,Cfzip,我正在寻找使用ColdFusion或Java压缩许多大文件的最节省内存的方法。我试过使用Nate Nielsen()的和zip.cfc。对于测试,我压缩了一个目录,其中包含80个mp4文件,总计1.18GB。结果如下。当标记运行时,我根本看不出有什么区别,ColdFusion的正常“步骤”似乎没有改变。但使用zip.cfc时,内存使用率更高 所以我的问题是,哪个结果更好?还是有其他我不知道的新方法比这两种方法都好? 我更关心内存使用而不是速度。但就速度而言,要快一点时间是100871zip.cf

我正在寻找使用ColdFusion或Java压缩许多大文件的最节省内存的方法。我试过使用Nate Nielsen()的
zip.cfc
。对于测试,我压缩了一个目录,其中包含80个mp4文件,总计1.18GB。结果如下。当
标记运行时,我根本看不出有什么区别,ColdFusion的正常“步骤”似乎没有改变。但使用
zip.cfc
时,内存使用率更高

所以我的问题是,哪个结果更好?还是有其他我不知道的新方法比这两种方法都好?

我更关心内存使用而不是速度。但就速度而言,
要快一点<代码>时间是100871<代码>zip.cfc时间是141285

谢谢

测试代码:

<cfoutput>
    <cfset tBegin = GetTickCount()>
    <cfzip
        action="zip"
        source="#dir#"
        file="#zipFile#"
        storepath="false"
        overwrite="true"
        />
    <cfset tEnd = GetTickCount()>
    <cfset scriptTime = (tEnd - tBegin)>
    Script Time: #scriptTime#
</cfoutput>
<cfdirectory directory="#dir#" name="d" recurse="false">
<cfoutput>
    <cfset tBegin = GetTickCount()>
    <cfset zipper = createObject("component", "zip")>
    <cfscript>zipper.newZip(zipFile);</cfscript>
    <cfloop query="d">
        <cfset zipper.addFile(dir&d.name)>
    </cfloop>
    <cfscript>zipper.createZip();</cfscript>
    <cfset tEnd = GetTickCount()>
    <cfset scriptTime = (tEnd - tBegin)>
    Script Time: #scriptTime#
</cfoutput>

我必须跑步,所以现在不能打字,但明天会回来。这是我对现实世界的文件类型(.txt、.ppt、.doc、.swf等)运行后的测试结果。看起来
比压缩MPEG文件的
zip.cfc

Uuh要好得多?你真的获得了那么多的空间吗?没有,没有,只是在测试大文件,这就是我所拥有的。文件类型会有所不同吗?这两个测试都是针对相同的文件运行的。我将收集大量文本文件和PDF,并对其进行测试,看看会发生什么。我不是在这里测试压缩,主要是观察记忆。我无法解释为什么,但是的,它会起作用;试图压缩“二进制”文件(因为缺少更好的术语)比文本文件花费的时间更长。如果这些文件不是您最终要使用的文件,您应该为自己构建一个代表性的集合,以便测量更准确—只需查看zip.cfc代码—没有任何函数或组件在它们上有
output=false
,因此它将不必要地缓冲(这将减慢速度),并且没有var作用域(因此它不是线程安全的)。代码的某些部分看起来也很可疑-我绝对建议不要使用该zip.cfc,即使在添加cfzip之前已在CF版本上卡住了。请关闭空白管理并查看源代码。我遇到了一些带有Windows的/cfzip性能问题。我转而使用cfexecutewith7zip,而不是使用java花30秒到5分钟。7Zip更健壮(即,支持更多归档类型,完成后自动删除源文件)。在前端,我执行一个ajax请求,以确定在强制下载之前是否存在最终的ZIP文件。通过这样做,我们的应用服务器变得更加稳定。