在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加

时间:2022-11-13 16:02:35

newbin的返回值 给k
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
printf不打印k 时间
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
下面是才增加了printf 输出k值
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
通过printf打
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
印k后 输出的时间
为什么前后差别这么大 但是同样的2个代码在pc电脑上的linux中运行 时间一致,arm上却会有这么大的区别,求大神解释的说。。。。。。。

8 个解决方案

#1


可能是gettimeofday的精度不够

#2


有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题

#3


引用 1 楼 alhw 的回复:
可能是gettimeofday的精度不够

引用 2 楼 alhw 的回复:
有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题

应该不会是精度问题,运行程序是,能明显感觉的运行时间的增加,感觉问题不在计时上面 
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
改成这样 通过对k值判断 后打印m值 择在 100 000us左右 就是感觉正常运行时间
如果改成
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
这样 将k值直接赋值给m后打印 时间则有变成了 400 000us左右 再次变长

#4


单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久

#5


引用 4 楼 alhw 的回复:
单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久

赋值是很好 1000次赋值 肯定要不了1000us 感觉就像是printf打印k时又把k从新计算了一遍一样 感觉完全想不通 感觉像是arm架构的问题引起的.....好纠结 

#6


printf要跟console通讯,牵涉到IO,有时会造成进程被挂起,让你误以为时间加长

#7


如果把printf移到获取时间以后呢?

#8


引用 7 楼 alhw 的回复:
如果把printf移到获取时间以后呢?

谢谢了 我找到原因了 是gcc的优化编译 吧函数优化掉了 所以 时间前后差距这么大

#1


可能是gettimeofday的精度不够

#2


有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题

#3


引用 1 楼 alhw 的回复:
可能是gettimeofday的精度不够

引用 2 楼 alhw 的回复:
有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题

应该不会是精度问题,运行程序是,能明显感觉的运行时间的增加,感觉问题不在计时上面 
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
改成这样 通过对k值判断 后打印m值 择在 100 000us左右 就是感觉正常运行时间
如果改成
在A9 的linux系统上跑算法 增加结果量的输出 时间大幅度增加
这样 将k值直接赋值给m后打印 时间则有变成了 400 000us左右 再次变长

#4


单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久

#5


引用 4 楼 alhw 的回复:
单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久

赋值是很好 1000次赋值 肯定要不了1000us 感觉就像是printf打印k时又把k从新计算了一遍一样 感觉完全想不通 感觉像是arm架构的问题引起的.....好纠结 

#6


printf要跟console通讯,牵涉到IO,有时会造成进程被挂起,让你误以为时间加长

#7


如果把printf移到获取时间以后呢?

#8


引用 7 楼 alhw 的回复:
如果把printf移到获取时间以后呢?

谢谢了 我找到原因了 是gcc的优化编译 吧函数优化掉了 所以 时间前后差距这么大