加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ioctl和执行时间

发布时间:2020-12-16 06:54:48 所属栏目:百科 来源:网络整理
导读:我有一个运行两个线程的程序 – 它们使用消息队列进行通信. 在一个线程中,我调用ioctl()来访问硬件解密器.代码如下: void Decrypt{........if(condition 1){.......retVal = ioctl(...);comesInHere1++;}if(condition 2){......retVal = ioctl(...);comesIn
我有一个运行两个线程的程序 – 它们使用消息队列进行通信.

在一个线程中,我调用ioctl()来访问硬件解密器.代码如下:

void Decrypt
{

...
..
...

if(<condition 1>)
{.
...
...
retVal = ioctl(...);
comesInHere1++;
}

if(<condition 2>)
{
...
...
retVal = ioctl(...);
comesInHere2++;
}

comeInHere1和comeInHere2用于计算它在特定if循环中的次数.

整个程序需要80毫秒才能执行.但是如果我注释掉测试变量(ifInHere1,if循环中的comeInHere2),执行时间会增加8毫秒到88毫秒!

怎么可能?我现在无法将变量注释掉,因为它增加了所用的时间,无法保留它们 – 将在代码审查中被杀死:)

请告诉我

谢谢

解决方法

缓存?通过添加更多数据,您可能会将代码移动到不同的缓存行,这些缓存行会以某种方式放在一起,从而导致颠簸.您可以通过在不同系统上运行并在每个线程中专门使用的变量之间添加填充数据来进行实验.

如果将处理序列化到单个核心会发生什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读