ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 彭希仁

[Excel 程序开发] [开_86] 比速度,看谁的程序更快.

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-15 19:06 | 显示全部楼层

数据运算一遍的时候会驻留内存(如果程序中没有编写内存释放过程的话),可以认为是变相的缓存,第二次运行速度会快很多。……没有考证过。不过似乎是普遍现象。

TA的精华主题

TA的得分主题

发表于 2006-7-2 16:14 | 显示全部楼层

今天正好有空,也来凑凑热闹,一道递归算法的典型教学题。

yyjcKtUj.rar (9.96 KB, 下载次数: 327)

测试结果:

(1) 20,19,18,....,1(88)   num:12689    time:0.32 second

(2) 1,3,5,......100(150)  num:33456    time:0.89 second

(3) 1,2,3,......100(100)  num:444793  time:12.45 second

这个速度如何?

[此贴子已经被作者于2006-7-2 16:15:02编辑过]

TA的精华主题

TA的得分主题

发表于 2006-7-2 18:17 | 显示全部楼层
QUOTE:
以下是引用UNARTHUR在2006-7-2 16:14:11的发言:

今天正好有空,也来凑凑热闹,一道递归算法的典型教学题。

测试结果:

(1) 20,19,18,....,1(88)   num:12689    time:0.32 second

(2) 1,3,5,......100(150)  num:33456    time:0.89 second

(3) 1,2,3,......100(100)  num:444793  time:12.45 second

这个速度如何?


真快

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-3 11:59 | 显示全部楼层
QUOTE:
以下是引用UNARTHUR在2006-7-2 16:14:11的发言:

今天正好有空,也来凑凑热闹,一道递归算法的典型教学题。

测试结果:

(1) 20,19,18,....,1(88)   num:12689    time:0.32 second

(2) 1,3,5,......100(150)  num:33456    time:0.89 second

(3) 1,2,3,......100(100)  num:444793  time:12.45 second

这个速度如何?


如果非要将结果存储在EXCEL单元格中速度能做到多少?

TA的精华主题

TA的得分主题

发表于 2006-7-3 13:52 | 显示全部楼层

因为结果数量不定,且有可能数据量很大,对于这种情况江结果保存在文本文件或其他数据库格式表文件是最合理的方式,为什么非要保存在excel里面呢?

如果非要保存在excel中也不是不可以,不过鉴于数据量很大,出于内存大小的考虑,建议分批提交结果,例如每65536条记录commit一次到工作表。这样做速度肯定不会慢,甚至能超过输出到文本的速度。但我不推荐!

其实这是一道纯粹的算法题,keys不在于结果保存在哪里或以什么形式保存,而在于如何设计算法使得计算更高效。当然在程序设计中还需要在兼容性和速度之间选择平衡点,例如我提供的代码只适用于无序的整数,如果想让其适用于小数只需修改变量的数据类型即可,但这会速度有一定影响。另外算法的设计还与数据的特征有很大关系,假如数据特征是只需要处理如(3)的情况,即1,2,3,4,....,100(100)的话,算法可以重新设计,运算速度能比现在的快很多!

扯远了,以上愚见.

[此贴子已经被作者于2006-7-3 14:36:15编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-3 15:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

就算法而言楼上还不算是最快的。完全可以在4秒种内算完1,2,3,4,....,100(100),存储再花3秒,也就7秒左右。

但存储到EXCEL中又如何能够提高运行速度呢?运算时间很不稳定(有时可能会花几分钟,有时可能十几秒)。

TA的精华主题

TA的得分主题

发表于 2006-7-3 16:04 | 显示全部楼层

哪个答案是7秒算完的呀?贴出来了吗?我想看看。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-3 16:22 | 显示全部楼层

前面已经有答案了,将存储方式改成记事本的方式,就行啦。

TA的精华主题

TA的得分主题

发表于 2006-7-3 16:35 | 显示全部楼层
前面好多答案呀,第几楼的?

TA的精华主题

TA的得分主题

发表于 2006-7-3 17:56 | 显示全部楼层

仁兄楼上的附件我刚才看了,不过在我的机器上直接运行100那组的话好像会死机哦,去掉输出答案的部分纯计算的话约7秒,还是挺快的:)

如果只计算不输出的话我修改了一下我原来的代码,这样计算只用 2.5 秒,但是要输出的话花的时间就比原来的还要多,结果看起来也有点丑,呵呵!

  l7Z2RcI4.rar (10.11 KB, 下载次数: 123)

所以我还是觉得原来的代码好一些。

如果仅仅算(100)的那组的话,计算+输出的代码还有很大优化余地,不过感觉没有必要了。


[此贴子已经被作者于2006-7-3 19:48:25编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 16:11 , Processed in 0.044716 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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