cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1867|回复: 13

请教高人,怎样加快下面程序的执行速度!

[复制链接]
发表于 2009-8-17 21:09:07 | 显示全部楼层 |阅读模式
各位斑竹,我正在编制一个逆向求解中子动力学方程的程序,开始使用的是FORTRAN90编制的,在我的笔记本上求解2000个ρ值(反应性)的执行速度为2秒左右,后来使用labview8.6编制,执行速度为5.9秒,而我的程序中,要求这个程序执行的速度必须在1秒以下才可以,自己考虑了使用并行方式编制,不过好像不可以,已经编制了4天了,都没有得出正确的结果,特上这里来请各位大虾指教一二!不胜感激!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-8-18 09:12:53 | 显示全部楼层
看你的程序,需要读取三个数据啊?三个文件呢?
发表于 2009-8-18 17:05:47 | 显示全部楼层
由于缺三个数据文件,不能运行。
不过我看了一下程序框图,直觉是你把“写入文本文件”的动作放在了循环里,这可能是最耗时的环节。建议在循环体内把数据形成2D数组带出,等出了循环体后再一次性的写入文件。
 楼主| 发表于 2009-8-19 14:05:34 | 显示全部楼层
楼上说的有些道理,我试试看!不过不知道能不能把速度提高到1秒以内!
 楼主| 发表于 2009-8-19 14:07:57 | 显示全部楼层
HHHHLLLL,我这次把文件传上去,你再看看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-8-19 14:26:40 | 显示全部楼层
本帖最后由 HHHHLLLL 于 2009-8-19 14:29 编辑

没更改任何地方,在我这运行,不到1秒。若260ms。
 楼主| 发表于 2009-8-19 14:28:07 | 显示全部楼层
lihanjun1999 ,我按照你说的,将写入文本文件的部分去掉了,然后使用性能查看工具,发现时间并没有多大的变化,并且我的程序真正执行的时候最外的FOR循环次数是2000次,执行下来基本上还是5秒多,我的笔记本是联想的Y430,配置算是不错的了,难道这种程序就需要5秒多才能完成么?静待各位大虾的回音!
发表于 2009-8-19 14:32:26 | 显示全部楼层
我试了你的程序运行不到一秒,看来不是程序的问题。再换一台好些的台式机试试吧。
 楼主| 发表于 2009-8-19 22:57:57 | 显示全部楼层
各位不好意思,我的外循环的次数更改过了,应该是2000次才对,重新发一次!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-8-19 22:58:51 | 显示全部楼层
各位这次在看看,是否还是1秒内,我的机器运行时间为5秒多一点,你们呢,能不能做到一秒以内呢?
 楼主| 发表于 2009-8-19 23:12:29 | 显示全部楼层
今天一整天都在研究怎么样能将程序并行处理,最后得出的结论是不行,必须实行FOR循环的嵌套才能将方程解出来,就不往这个方面努力了,后来就一直在研究怎样加快程序的执行速度,无意间看了看书,说二进制的文件读取的速度最快,我这个程序使用的是文本文件,假如改为二进制文件进行存取的话,速度是不是会快一些,不知道能快多少?
发表于 2009-8-20 10:10:20 | 显示全部楼层
看来你的电脑比我的快多了,我要用时8.9秒。
仔细看了一下,发现最内层的循环体中有“字符串截取”和“字符串至数值转换”函数,这可是耗时大户。小小试验了一把,把这两个函数框进“禁用框图”,结果用时降到了2秒。如图:
所以建议在整个循环开始之前,把文本文件里的数据先行处理,转换为双精度数据数组,再进入循环。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-8-20 21:35:57 | 显示全部楼层
楼上的哥们的确厉害,我按照你的说法将文本先转成了双精度数组,然后进入循环,果然时间降到了1.2秒,快了很多,多谢多谢!我又将程序的数据文件做了一定的修改,将2000次外循环使用每5个点的数据求和然后取平均的方式降到了400次外循环,精度没有下降,这次只用了62毫秒,速度极大的提高了,已经能满足我的程序的要求了,多谢楼上的哥们的大力帮助!多谢了!
发表于 2009-8-20 21:38:58 | 显示全部楼层
发现牛人真多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2024-5-19 23:38 , Processed in 0.568749 second(s), 8 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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