Перейти к содержанию
    

Других вариантов у меня нет. Можно, действительно, прошерстить код на предмет удаления ненужных критических секций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из потенциальных кандидатов нашёл только TMutex::is_locked().

Но настойчивого зуда её оптимизировать у меня нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда предлагаю оставить как есть. Системные тики мы уже соптимизировали (вернее, теперь есть способ их оптимизировать путём объявления дефайна в проекте), остальное, скажем так, оптимизации  особо не требует :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё TEventFlag можно в паре мест пооптимизировать. Но там проще - флажок да/нет атомарный везде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, AHTOXA сказал:

Тогда предлагаю оставить как есть. Системные тики мы уже соптимизировали (вернее, теперь есть способ их оптимизировать путём объявления дефайна в проекте), остальное, скажем так, оптимизации  особо не требует :)

Похоже, что так. Кстати, этот красивый шаблон, он, я понял, требует же поддержки со стороны более-менее современного компилятора. Т.е. если его добавлять, то надо тестировать на всём зоопарке компиляторов (особенно это тяжко, как ты уже сказал, для iar/avr, iar/stm8). Кроме того, это будет вынуждать пользователя переходить на более современный тул. Имхо, оно того не стоит.

12 часов назад, esaulenka сказал:

Ещё TEventFlag можно в паре мест пооптимизировать. Но там проще - флажок да/нет атомарный везде.

С одной стороны да, можно просто выкинуть из TEventFlag::clear/is_signaled критическую секцию - должно везде работать, но надо проверять, если включать это в релиз. С другой стороны, ну сколько этих clear, is_signaled в коде попадается и какой при этом оверхед? Какой там прирост будет? Да практически никакого. Ну, и смысл ворошить? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поудалял у себя TCritSect cs; в TBaseMessage is_non_empty/reset и в TEventFlag is_signaled/clear.

Проект (~ 160 kB) сократился на 128 байт. Не скажу, что принципиально, но всё-таки.

Прирост скорости не проверял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, IgorKossak сказал:

Поудалял у себя TCritSect cs; в TBaseMessage is_non_empty/reset и в TEventFlag is_signaled/clear.

Функциональность проекта не сломалась?

Какой МК? Компилятор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/2/2018 at 1:30 PM, dxp said:

Функциональность проекта не сломалась?

Какой МК? Компилятор?

Ничего не сломалось, да и не могло. Cortex-M4 (STM32F417), GCC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...