十年了 难道是硬件速度快了120倍至少?

slowgrace 2009-08-16 09:33:09
“A client application written in Visual Basic may not attempt to unload an in-process component immediately after the last reference is released. The frequency of attempts depends on how frequently idle time becomes available; in general it will be around two minutes.”


可我试了几次都是一眨眼就卸载了。假设这一眨眼是1秒,那么说从98年(假定这文档是98年写的)到现在,硬件速度至少快了120倍?
...全文
191 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2009-08-19
  • 打赏
  • 举报
回复
同样的功能,需要执行指令的次数是固定的。
无论 CPU 速度如何提高,系统进程始终只需要执行 80 次指令。
slowgrace 2009-08-19
  • 打赏
  • 举报
回复
囧 我是计算机盲 你能给我解释一下这个图里和这个帖子相关的数据么
threenewbee 2009-08-18
  • 打赏
  • 举报
回复

原来可以上图。
slowgrace 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 tiger_zhao 的回复:]
假如原先的运行速度为 100,有 20 次空闲;速度提高到 200 后,就有 120 次空闲,倍率为 600%。
[/Quote]

你这是笔误么?为啥速度提高200后,空闲从20次增长到120次?我觉得应该是40次啊?
threenewbee 2009-08-17
  • 打赏
  • 举报
回复
十年前典型的 CPU 是 Intel Pentium II 350MHz,运算速度大约 1000 MIPS
现在的典型 CPU 是 Intel Core 2 Duo E8400 3000MHz,运算速度大约 30000 MIPS,大约快了 30 倍。
m60a1 2009-08-17
  • 打赏
  • 举报
回复
没有实际意义
Tiger_Zhao 2009-08-17
  • 打赏
  • 举报
回复
依赖于系统的管理机制,也许应该找个 Win9x 的系统试试。
cqq_chen 2009-08-17
  • 打赏
  • 举报
回复
可能才120吗?
slowgrace 2009-08-17
  • 打赏
  • 举报
回复
我是按照这一节试的,逻辑上应该没错误的:

mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2001OCT\1033\vbcon98.chm::/Html/vbconcircularreferencescomponentshutdown.htm

slowgrace 2009-08-17
  • 打赏
  • 举报
回复
我的概念应该没错。

我不是直接关闭主程序,而是在部件的一个Class的Terminate事件里弹出一个对话框,告诉我它被销毁了。我的程序设置的是这个Class的对象不会被销毁,除非部件被整体卸载。对话框弹出后我的主程序仍然在运行的。

所以,我知道部件是立即被卸载了,而不是等了2分钟。
Tiger_Zhao 2009-08-17
  • 打赏
  • 举报
回复
[Quote=MSDN:]用 Visual Basic 写的客户应用程序可能不会在最后一个引用被释放后立刻试图下载进程内部件。这要看是否常有空闲的时间。这个时间的经验值为两分钟。[/Quote]
还找到错别字:下载

你的概念搞错了,这里讲的是部件卸载,并不是整个程序的卸载:
●在 COM 模型中,exe、dll、ocx 都是独立部件。
●主程序 exe 先加载运行。
●如果要创建其他部件的对象,那么第一次会自动用 LoadLibrary 载入部件。以后再创建该部件的对象就不需要用 LoadLibrary 了。
●如果将该部件相关的对象全部释放,由于无法判断该部件是否还要用到,会保留一段时间,一直没用才用 FreeLibrary 卸载该部件。
●如果你直接关闭主程序,当然所有的部件都立即被 FreeLibrary 了。

至于多久才卸载要看部件管理机制,也许为了速度考虑会一直不卸载。这方面的文档没有具体印象。
东方之珠 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yachong 的回复:]
"摩尔定律是指IC上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。"
似乎从1998到2009正好过了7个“18个月”,128倍
[/Quote]

顶!
Tiger_Zhao 2009-08-17
  • 打赏
  • 举报
回复
[Quote=MSDN:]由于没有对公共对象的引用,在一段时间后(通常是两分钟左右,不过也依赖于程序进入空闲状态的时间间隔),Visual Basic 将试图卸载进程内部件。[/Quote]
也就是说不是简单的 CPU 速度比,而是进入空闲状态的次数计数。
假如原先的运行速度为 100,有 20 次空闲;速度提高到 200 后,就有 120 次空闲,倍率为 600%。
slowgrace 2009-08-16
  • 打赏
  • 举报
回复
Anyway,你们知道现在普通配置的电脑,how frequently idle time becomes available么?
dingyanwei 2009-08-16
  • 打赏
  • 举报
回复
硬件速度应该没有快了120倍,倒是处理能力有可能提升了120倍以上

例如奔腾133主频应该在0.8GHz,现在的基本都在2.6GHz,主频提升才3倍多
而性能上,以前的16位cpu,现在的64位,这个处理能力可就不可小看了,再加上二级缓存、一级缓存节省的时间而让人感到速度提升都是非常有效的。
嗷嗷叫的老马 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yachong 的回复:]
"摩尔定律是指IC上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。"
似乎从1998到2009正好过了7个“18个月”,128倍
[/Quote]
顶蚜虫兄!哈哈.
贝隆 2009-08-16
  • 打赏
  • 举报
回复
Intel的摩尔定律
zdingyun 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yachong 的回复:]
"摩尔定律是指IC上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。"
似乎从1998到2009正好过了7个“18个月”,128倍
[/Quote]
高!符合摩尔定律!

bj0629 2009-08-16
  • 打赏
  • 举报
回复
只知道有 cpu idle process 一般为95以上,这里可能是snap使速度下降为86,其它的idle没见过!?
slowgrace 2009-08-16
  • 打赏
  • 举报
回复
聪明的虫。
加载更多回复(4)

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧