求助:如何提高程序运行效率 点击:702 | 回复:10



scott999

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 41回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2003年12月23日
发表于:2007-07-15 12:10:00
楼主
有一段程序,用于单位换算以及计算的.但是不需要每次循环中都进行计算,而是有5个数据发生变化时,才需要重新计算.
是不是用比较指令比较这5个数据的当前值和以前值的不同,再调用这段子程序?
我觉得这个办法效率不是太高,有没有更高效的办法?



老工控

  • 精华:1帖
  • 求助:0帖
  • 帖子:61帖 | 4475回
  • 年度积分:0
  • 历史总积分:22733
  • 注册:2003年6月25日
发表于:2007-07-15 13:18:00
1楼
这和效率有什么关系呢?
不够5个时候一直不调用
够5个执行子程序,并将不一样的付值为一样

scott999

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 41回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2003年12月23日
发表于:2007-07-19 22:48:00
2楼
看来是我没说清楚.
5个数据中任何一个发生变化,都要重新计算一遍.

所谓提高效率,就是用子程序或者中断尽量减少每次循环执行代码行.

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-07-19 23:21:00
3楼
老工控说得没错:把5个存储器赋值到另外5个存储器,当这5个存储器和另外5个存储器对应比较,如果有相应的存储器值不相等,那么就调用子程序。调用子程序后,再把这5个存储器赋值到另外5个存储器。

scott999

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 41回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2003年12月23日
发表于:2007-07-20 20:44:00
4楼
我也是这样理解的,就如开始时提到的:用比较指令比较这5个数据的当前值和以前值的不同,再调用这段计算子程序。

可是我还是觉得用5条比较指令费时间。

是不是用块比较功能可以使每次循环省时一点?

天涯小子

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 235回
  • 年度积分:0
  • 历史总积分:391
  • 注册:2004年8月09日
发表于:2007-07-20 21:36:00
5楼
我觉得可以用子程序或跳转程序,条件为比较。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-07-21 12:47:00
6楼
呵呵,你就比较在乎那么几百微秒的时间吗...

skyeagle

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 64回
  • 年度积分:0
  • 历史总积分:295
  • 注册:2005年5月19日
发表于:2007-07-21 14:41:00
7楼
使用计算功能将5个数值相加后存入寄存器再和当前值比较,大于0或小于0则重新计算,否则跳转。

skyeagle

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 64回
  • 年度积分:0
  • 历史总积分:295
  • 注册:2005年5月19日
发表于:2007-07-21 14:48:00
8楼
使用计算功能将5个数值相加后存入寄存器再和当前值比较,大于0或小于0则重新计算,否则跳转。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2007-07-21 15:32:00
9楼
其实“5个数值相加”还是需要好几个指令的...

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2007-07-22 07:48:00
10楼
我認為樓主如果覺得效率不高,應該拿出數據來說,畢竟感覺是有誤差的,西門子功能手冊對每條指令都有確切的時間的,只有通過將時間累加進行比較才能知道怎么寫更高效一些。

热门招聘
相关主题

官方公众号

智造工程师