newbin的返回值 给k
printf不打印k 时间
下面是才增加了printf 输出k值
通过printf打
印k后 输出的时间
为什么前后差别这么大 但是同样的2个代码在pc电脑上的linux中运行 时间一致,arm上却会有这么大的区别,求大神解释的说。。。。。。。
8 个解决方案
#1
可能是gettimeofday的精度不够
#2
有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题
#3
应该不会是精度问题,运行程序是,能明显感觉的运行时间的增加,感觉问题不在计时上面
改成这样 通过对k值判断 后打印m值 择在 100 000us左右 就是感觉正常运行时间
如果改成
这样 将k值直接赋值给m后打印 时间则有变成了 400 000us左右 再次变长
#4
单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久
#5
赋值是很好 1000次赋值 肯定要不了1000us 感觉就像是printf打印k时又把k从新计算了一遍一样 感觉完全想不通 感觉像是arm架构的问题引起的.....好纠结
#6
printf要跟console通讯,牵涉到IO,有时会造成进程被挂起,让你误以为时间加长
#7
如果把printf移到获取时间以后呢?
#8
谢谢了 我找到原因了 是gcc的优化编译 吧函数优化掉了 所以 时间前后差距这么大
#1
可能是gettimeofday的精度不够
#2
有兴趣你可以看看你的arm kernel source对do_gettimeofday的定义有没有问题
#3
应该不会是精度问题,运行程序是,能明显感觉的运行时间的增加,感觉问题不在计时上面
改成这样 通过对k值判断 后打印m值 择在 100 000us左右 就是感觉正常运行时间
如果改成
这样 将k值直接赋值给m后打印 时间则有变成了 400 000us左右 再次变长
#4
单纯的赋值不会那么久的,不信你做个for循环1000次赋值,看看时间多久
#5
赋值是很好 1000次赋值 肯定要不了1000us 感觉就像是printf打印k时又把k从新计算了一遍一样 感觉完全想不通 感觉像是arm架构的问题引起的.....好纠结
#6
printf要跟console通讯,牵涉到IO,有时会造成进程被挂起,让你误以为时间加长
#7
如果把printf移到获取时间以后呢?
#8
谢谢了 我找到原因了 是gcc的优化编译 吧函数优化掉了 所以 时间前后差距这么大