.EXE压缩的<font color="red">双刃剑!</font>(0分)

  • 主题发起人 主题发起人 ahxia
  • 开始时间 开始时间
A

ahxia

Unregistered / Unconfirmed
GUEST, unregistred user!
刚刚看了undu, 觉得不错耶:
好多人都用过 像 ASPack,UPX这类的可执行程序压缩软件,但是..
下面开始吓唬大家:
Win32的运行机制优势有..
1, 需要的东西放入内存,不需要的还是在硬盘上..(废话)但是对于单个的程序也
是如此: 例如一个程序有打印功能,不需要打印的时候,代码并没有加载,只有第
一次调用了,才放入内存... 一旦内存非常紧张,就通过页交换,把这种长期不使
用的内存扔掉.(听起来不错的样子)
2.同一个程序的申请的内存就是这一个,(好像也废话), 就是说,哪怕你同一个程序
有很多实例同时存在,依然还是用同样的这一块内存, 无论.exe 还是 .dll 都如此.
就是说正常情况下,一个实例和100个同一个程序的实例,占用内存一样多.(怎么有
一点像linux, 这个我不大清楚 ~~ )
---Bad News Below---
如果压缩了呢, Win32程序就变得和压缩了的DOS程序一样了,加载的时候,把所有
的内容都载入内存, 仅仅当程序结束,才可以释放...而且,更坏的是...多个实例之间
不能共有同一内存了...无论对exe还是dll (比较坏的消息) ,这就是因为压缩了的exe
不是用原始(raw)的模样存储的, win32没法帮你的忙 :(
然后...不知道大家以后还用不用exe压缩呢? (偷笑哦)
 
这种说法危言耸听
 
另一方面
以他们大于一半的压缩率,即使全部调入内存,因该也比原来程序大不了多少,但是
就是因为他们提前调入内存,在对相关运算和将要进行的运算却起到预先载入的作用,
这在一定程度上反而加速了程序的运行速度。
你认为呢?有利必有弊。
 
to a_fi: 压缩了的东西要释放才可以执行,所以,绝对比压缩前要占地方,
节省的只是load时间
to thtfsyh ...居然是这么容易敲错的名字.... 我没有说压缩不能用,只是越大
的程序压缩了对系统资源占用就越多.. 浪费一点硬盘应该比浪费内存值得.
 
我来说两句:
优点:压缩后可以节约磁盘空间(估计这个优点是:有且仅有)
缺点:1、解压时占用系统资源,CPU时间的占用情况需要具体分析,有兴趣的可以给我来信
2、压缩、整理程序需要大家宝贵的时间
剩下还有最重要一点:估计也没有几个人会经常同时运行同一个程序吧?
 
不过压缩的主体是程序中的各种资源,
代码的压缩量比较小,
所谓压缩一半以下也正是因为在windows下程序所包括的资源(图标、图形、字符串等)太大了。
 
以现在的网络速度和磁盘容量, 要是不压缩......
不用我说了吧.
 
3M多的程序,压完了只有8百K,我不知道“瘟到死”的exe是怎么回事。
还是“呆到飞”生成的exe有毛病。
 
致 beta 兄:
  如果说压缩是为了传输或备份,比 ASPack,UPX 的压缩比大的软件多的是,而且,备份了
以后一般都很少再去动它,所以,如果这类软件的目的只是为了减少文件大小,那它们根本就
没法生存。软件行业的特点是只有第一,比硬件行业还残酷。
  那么,开发这种软件的目的在哪里呢?
  就是将解压过程转移到后台,也就是将
    解压->执行
  简化成
    执行
  好,我们现在分析一下用 WinACE 和 ASPack,UPX 等后台解压软件实际的应用情况。
  首先,照您的说法,在内容相同的情况下,您在下载的时候一定会选择比较小的文件来
下载,在这里,ASPack,UPX绝对比不上 WinACE,为什么呢?因为在通常情况下,压缩文件
的压缩比越大,解压的时间也就越长,解压的时间太长的话,用户就会觉得 ASPack,UPX
等等降低了系统效率,这恐怕是您也不想看到的吧。另外,您哪天有空,可以自己试一下,
对1M长度的文件来说,是将它直接从硬盘中读出来的时间长,还是将 250K(压缩比为1:4)
的已压缩文件从硬盘中读出来再解压的时间长。读 1M 的数据在现在的流行配置来说,所花
时间绝对不会超过半秒,但是解压的时间呢?我都不敢告诉您了。那么,减少载入时间又是
怎么回事,答案是,文件最好在软盘上。在以前,微软发行DOS的时候,安装后的可执行文件
差不多都压缩过,就是因为那时发行的介质是软盘。运行的介质很可能也是软盘,而不是C盘!
  其次,再设想一下用ASPack,UPX等做备份的过程,首先,要先把 EXE 找出来,其次要
把它压一下,看看压缩比有多大,最后,要检查一下压缩后的程序有没有兼容性问题。最后,
对于剩下的文件要考虑是不是立刻就把它给删了。最后这个压缩后的文件您得备份,总不能每次
格式化硬盘后重装系统的时候您都再把上面的步骤都再做一便吧。假设您的可执行文件所属的
系统不需要安装,拷到硬盘上就能用,那就恭喜您了,如果不是呢,唉,不说了。
 
各位大哥,咋都不说话了呢?
同意也好,不同意也好,还是说两句吧,我这个人就喜欢跟高手讨论问题。
 
> 同一个程序的申请的内存就是这一个
你在98下开20个IE试一下,保证内存用完!
在nt/2000下,你可以观察到同一个程序的每个实例都要占一份内存。
 
为什么不建议用户升级机器呢,嘻嘻。
 
太好了,讨论开始了!
 
致 howardqu 兄:
  知己啊!
 
压缩后最重要的是能方便地在网上流通
 
>哪怕你同一个程序有很多实例同时存在,依然还是用同样的这一块内存, 无论.exe 还是 .dll 都如此
据我所知,只有DLL是这样,EXE不是这样的
 
我说一个实际的情况吧,
对于绝大多数的用户,当他们看到一个3M和一个800K的文件的功能一样时,
他会下载哪一个,他的感觉会怎样? 他是不是会认为这个800K的比3M的优秀?
现在的计算机都太好了,这些内存上的微小的差别不容易让人注意到,
但是个头的比较却让人印象深刻。
所以我觉得如果是网上传播的程序,还是压缩一下好。
虽然有点欺骗他人的味道:)
 
致 woodstock 兄:
  在网上传播的程序,确实是压缩一下好。我手脚并举赞成
  问题是,用什么东西来压缩呢?请赐教,
 
我下载了而且用了,说一下问题,
1、登陆时会出现一个错误框,但按取消后再登陆就没事,,
2、通用的真的不好用,,不是说你,界面可以好一点,既然要人注册就来点专业精神。
 
后退
顶部