找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7592|回复: 4

[开源] 不用API照样内存优化

  [复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-5-6 21:33:58 | 显示全部楼层 |阅读模式
.版本 2
.支持库 spec

.子程序 _内存优化

延迟 (10)
_启动窗口.位置 = 2
延迟 (10)
_启动窗口.位置 = -1

.子程序 _按钮1_被单击

_内存优化()
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

 楼主| 发表于 2010-5-6 21:48:34 | 显示全部楼层
如果用API优化可用以下代码
.版本 2
SetProcessWorkingSetSize (-1, -1, -1)

.版本 2

.DLL命令 SetProcessWorkingSetSize, 整数型, "kernel32", "SetProcessWorkingSetSize", 公开
    .参数 hProcess, 整数型
    .参数 dwMinimumWorkingSetSize, 整数型
    .参数 dwMaximumWorkingSetSize, 整数型
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

2

主题

23

回帖

0

精华

铜牌会员

积分
108
发表于 2010-5-14 14:38:06 | 显示全部楼层
呵呵,原来这样也可以呀

16

主题

81

回帖

0

精华

银牌会员

积分
611
发表于 2010-5-14 21:53:29 | 显示全部楼层
关键就是SetProcessWorkingSetSize 嘛,不过据说有点自欺欺人

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-7-13 23:44:23 | 显示全部楼层
确实是自欺欺人的.

SetProcessWorkingSetSize如此使用参数,就是将程序所使用的物理内存尽量地向虚拟内存中压.

表面上看,物理内存占用确实是少了.

但是,一旦程序需要使用到已经被强行压到虚拟内存(也就是硬盘页面文件)中的内容时,又得重新从虚拟内存里读出来.

目前最好的硬盘速度比起内存来说那都至少是慢了几十上百倍,于是此招就会造成当前程序的运行效率严重下降,同时因为频繁读硬盘,占用了本来就不多的带宽,搞得整个系统的运行效率都下降了.

所以这个函数不可以频繁地调用,一般是在窗体最小化之类的用户暂时不需要与程序交互时调用一下.

不得不说,发明这种损招的人很有才!把MSDN看了一半就叼着跑了!
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表