ioctl и время выполнения - PullRequest
       12

ioctl и время выполнения

4 голосов
/ 20 сентября 2010

У меня есть программа, в которой запущены два потока - они общаются с использованием очередей сообщений.

В одном потоке я вызываю ioctl () для доступа к аппаратному расшифровщику.Код выглядит следующим образом:

void Decrypt
{

...
..
...

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

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

приходятInHere1 и comeInHere2 используются, чтобы подсчитать, сколько раз он идет в этом конкретном цикле if.

Вся программа занимает 80 мс для выполнения.Но если я закомментирую тестовые переменные (comeInHere1, приходитInHere2 внутри циклов if), время выполнения увеличится на 8 мс до 88 мс!

Как это возможно?Я не могу закомментировать переменные сейчас, так как это увеличивает время, затрачиваемое на них, я тоже не могу их сохранить - будет убит при проверке кода:)

Пожалуйста, дайте мне знать

Спасибо

1 Ответ

1 голос
/ 20 сентября 2010

Cache? Вполне возможно, что, добавляя немного больше данных, вы перемещаете код в разные строки кэша, которые каким-то образом размещаются вместе, вызывая перегрузку. Вы можете экспериментировать, работая в разных системах и добавляя данные заполнения между переменными, которые используются исключительно в каждом потоке.

Что произойдет, если вы сериализуете обработку на одно ядро?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...