怎样在程序中尽量少用循环语句,特别是FOR语句?

skhunter 2003-12-12 05:57:02
我是用PB编程的,在遇到大型数据库的时候,如果在信息量很大的话,使用FOR循环就会使程序运行的很慢,而客户是很挑剔的,总是要我给程序加速,可我又没有办法.
这几天用C++做底层程序的时候又遇到这个问题,大量的FOR循环降低了程序的运行速度,请问有高手知道怎样避免这个问题吗?
...全文
192 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lyr311 2003-12-14
分配高维数组的问题--》一个容易忽略的角落。用非循环的方法分配,免得大量的循环和大量的调用函数。
  • 打赏
  • 举报
回复
fefang2003 2003-12-14

是算法问题
  • 打赏
  • 举报
回复
短歌如风 2003-12-14
最关键的还是在算法上进行优化。比如如果你要再两组数据中寻找交集,直接操作的时间复杂度是O(N^2),但如果先排序然后再操作,总的时间复杂度就变成了O(N*Log(N)),这样在N很大时效果会非常明显。
  • 打赏
  • 举报
回复
smalltalk 2003-12-13
如果循环必不可少,可以考虑将循环你调用的函数改成inline 方式,这将有利于提高效率。
  • 打赏
  • 举报
回复
晨星 2003-12-13
还有,通常显示一个进程条会让用户稍微耐心一些。:)
  • 打赏
  • 举报
回复
晨星 2003-12-13
同意,不是循环的问题,通常有两种可能:
(1)你的流程设计(即算法)有问题,比如循环内外设置不合理,过多的重复计算等等。
(2)你要执行的任务过于复杂,已经没有什么优化的余地了。
  • 打赏
  • 举报
回复
liangshixing 2003-12-13
用goto吧
  • 打赏
  • 举报
回复
vcforever 2003-12-13
循环是不可避免的,我想应该是你在循环中处理数据的算法有问题!
优化一下你的算法!
  • 打赏
  • 举报
回复
lijun2044 2003-12-13
循环次数大的外循环放在内循环!
循环次数小的外循环放在外循环!
  • 打赏
  • 举报
回复
gernal_dn 2003-12-13
大量的FOR循环降低了程序的运行速度?
匪夷所思!!!
应该是算法的问题!
  • 打赏
  • 举报
回复
ilovedonny 2003-12-13
楼上的好主意,呵呵~
  • 打赏
  • 举报
回复
md2d 2003-12-13
如果是底层程序的话,看看是否在循环中过多和过平凡的访问了系统资源(如:外部设备,数据库连接等)
  • 打赏
  • 举报
回复
TinyAnt 2003-12-12
plainsong说得对,关键不是避免for循环,而是让for循环尽量快点,比如:

a = 100;
for (int i=0;i<100;i++)
{
b = myFun(a) * i;
......
}

写成:
a = myFun(100);
for (int i=0;i<100;i++)
{
b = a * i;
......
}

这样可以避免100次调用myFun(int)所产生的CPU时间浪费
  • 打赏
  • 举报
回复
cpsoft 2003-12-12
再看看有没有可以合并的循环
  • 打赏
  • 举报
回复
短歌如风 2003-12-12
>大量的FOR循环降低了程序的运行速度

检查你的算法。如果从算法上无法优化,循环是不可能去除的,只能想办法加快循环中的代码的性能了。看看有没有重复计算的内容,放到循环外;检查循环次数看能不能减少等。
  • 打赏
  • 举报
回复
skywarship 2003-12-12
专门开一个线程来执行功能,主线程处理界面,这样可以及时将处理结果反馈到用户
  • 打赏
  • 举报
回复
相关推荐
课程设计-基于C++的mfc框架的学生社团管理系统(源码+数据库+报告).zip 本系统实现的功能 本程序为单文档应程序,主程序界面能实现查询社团信息、修改社团信息、删除社团信息、添加社团信息、入团、退团、户登录、和户管理功能其修改社团信息、删除社团信息、添加社团信息和户管理需要户登录后才能使,未登录就点击使的会会弹出对话框显示您还没有登录,点击登录按钮会弹出户登录对话框输入正确的户名称和密码若验证成功则会显示登录成功并显示出您有的权限高级管理员或者是普通管理员,高级管理员则可以对社团信息进行修改、删除、添加。点击入团按钮会弹出加入社团对话框,对话框内填上相应的信息后点击确定成功加入后会有相关提示,若没有成功则有可能您输入的社团不存,点击退团按钮弹出退出社团对话框,输入您要退出的社团名称和学号点击确定如果成功退出会显示成功的标志,否则的话就是您没有假如该社团活着您填的信息不完全。程序对话框可以直接控件内输入要修改的社团信息,然后点击修改按钮,分别输入控件的内容然后点击添加按钮,若要添加的社团当前没有的话则添加成功,否则会失败。登录了以后点击户管理按钮则会弹出户管理对话框,该对话框内可以修改户密码,高级管理员还能注册新户。
发帖
C++ 语言
加入

6.1w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2003-12-12 05:57
社区公告
暂无公告