测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
noaming:
你好,首先可以分析一下这个赋值语句所生成的汇编代码,从代码角度来分析为何会耗费这么多时钟周期。
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
noaming:
另外,你是如何测量的赋值语句,这个时间?看看测量方法是否得当。
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
Bingo Wu1:
回复 noaming:
我是通过拉高拉低测试引脚的电平来看代码执行时间的,从之前的一些测试数据来看,测试结果应该是可信的。
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
noaming:
回复 Bingo Wu1:
一个结构体的赋值语句,耗时应该很小,这样测量在时间级上也不对称啊
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
Bingo Wu1:
回复 noaming:
抱歉,之前忘了说明了,我是一整串类似的赋值语句一起测试的,有60、70句赋值。总共执行时间达到了十几微秒。
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
noaming:
回复 Bingo Wu1:
首先、通过CCS工具可以查一下具体耗费的时钟周期。
测AD中断的执行时间,发现对结构体或者共同体变量做赋值操作会耗费不少总线时间。
比如:DCA_L[Order_IndexA[i]].bit.ORDER = i; //其中DCA_L是局部的共同体变量
想请问下:这个语句相对于普通变量的赋值语句,执行时间要长很多吗?为什么呢?
如果我想减少执行时间,能做什么改进?比如把局部变量定义成全局的会不会好些
请大神赐教,我也会做试验,到时反馈给大家~
Bingo Wu1:
回复 noaming:
谢谢您的回答!
上午实际测试了,发现单纯赋值语句耗时没有之前认为的大(之前把小部分算法代码的执行时间也算在里面了,今天优化了这部分算法才节省了执行时间)。
当然,共同体的操作相对于普通变量会多耗时点,后面有机会再具体了解了