关于一个函数内五条打印的问题, 涉及性能,达人请进

szws 2019-05-21 10:30:03


图上图所示, 一个函数内,我写了五条打印。

程序运行时,每个打印之间的间隔,相差30~80us, 5条打印总耗时197us

而如果以每秒钟运行60次的速度调用, 则这5条打印的总耗时, 缩短为 31us。

为啥会这样呢? 谁能解释一下?
...全文
170 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2019-05-22
  • 打赏
  • 举报
回复
打印或输出log 都不要太频繁,不然降低性能。
whizer 2019-05-22
  • 打赏
  • 举报
回复
可以在run to complete的系统上run一下, 或者内核里面写同样的打印,试试效果。
ch_jm0723 2019-05-21
  • 打赏
  • 举报
回复
并发和单次调用是如何写的呢,是否与多核多线程工作有关? 另外,for循环中调用怎么写的,是否与函数调用传参,高速缓存以及IO调用方式有关?
636f6c696e 2019-05-21
  • 打赏
  • 举报
回复
可以通过绑核、核隔离来提升,确保不会出现cpu切换、cpu被抢占带来的耗时
引用 2 楼 szws 的回复:
另外一个实验, 把5条打印, 放在for循环里, 循环1万次, 则 CPU会冲高到7%, 并且, 5条打印总耗时, 只有 13us。 恶的天啊, 为啥 相差这么大, 从197us 到 13us ? 能否始终提高 CPU的效率? 让他一只很high的工作?
szws 2019-05-21
  • 打赏
  • 举报
回复
另外一个实验, 把5条打印, 放在for循环里, 循环1万次, 则 CPU会冲高到7%, 并且, 5条打印总耗时, 只有 13us。

恶的天啊, 为啥 相差这么大, 从197us 到 13us ?

能否始终提高 CPU的效率? 让他一只很high的工作?
szws 2019-05-21
  • 打赏
  • 举报
回复
感觉是 cpu 使用率越高, 处理效率就越高
636f6c696e 2019-05-21
  • 打赏
  • 举报
回复
可以设置下线程为FIFO试试
引用 5 楼 szws 的回复:
[quote=引用 3 楼 636f6c696e 的回复:] 可以通过绑核、核隔离来提升,确保不会出现cpu切换、cpu被抢占带来的耗时 [quote=引用 2 楼 szws 的回复:] 另外一个实验, 把5条打印, 放在for循环里, 循环1万次, 则 CPU会冲高到7%, 并且, 5条打印总耗时, 只有 13us。 恶的天啊, 为啥 相差这么大, 从197us 到 13us ? 能否始终提高 CPU的效率? 让他一只很high的工作?
[/quote] 已经绑核,没啥改变~~~[/quote]
stherix 2019-05-21
  • 打赏
  • 举报
回复
这个就是windows分配时间片的策略啊 你的工作越忙,就越不可能CPU时间被分给其他的线程 你也可以手动提高线程的优先级
赵4老师 2019-05-21
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
szws 2019-05-21
  • 打赏
  • 举报
回复
引用 3 楼 636f6c696e 的回复:
可以通过绑核、核隔离来提升,确保不会出现cpu切换、cpu被抢占带来的耗时
[quote=引用 2 楼 szws 的回复:]
另外一个实验, 把5条打印, 放在for循环里, 循环1万次, 则 CPU会冲高到7%, 并且, 5条打印总耗时, 只有 13us。

恶的天啊, 为啥 相差这么大, 从197us 到 13us ?

能否始终提高 CPU的效率? 让他一只很high的工作?
[/quote]

已经绑核,没啥改变~~~

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧