Каковы некоторые методы для ограничения зависимостей от компиляции в проектах C++?

Использование clock_gettime() и nanosleep() - путь. Какой-то другой механизм, вызывающий вашу функцию периодически, будет определенно медленнее. Вы можете даже рассмотреть циклы и счетчики циклов вместо использования nanosleep(). Рассмотрим некоторые цифры:

При частоте 1 МГц ваша функция должна работать 1 микросекунду. На частоте 10 МГц ваша функция должна работать 100 наносекунд.

Некоторые экспериментальные данные о времени системных вызовов и переключениях контекста: https://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html [ 113]

Так что это выглядит как более 50 наносекунд для системного вызова и более микросекунды для переключения контекста. Некоторые другие вещи, вызывающие вашу функцию, помимо вашего собственного кода в том же процессе, вероятно, займут «слишком много времени».

6
задан JohnMcG 9 October 2008 в 18:07
поделиться

4 ответа

У Herb Sutter есть большая обработка этой точной темы в Объектах 26, 27 и 28, "Минимизируя Зависимости Времени компиляции, Части 1, 2 и 3", в его превосходной книге Исключительный C++, ISBN: 0201615622.

сопроводительный текст http://ak.buy.com/db_assets/prod_images/489/30611489.jpg

По моему скромному мнению, это - одна из лучших доступных книг программирования на C++.

6
ответ дан 8 December 2019 в 05:59
поделиться

Я думаю, что необходимо быть очень осторожны и внимательны к этому. Обычно можно ограничить зависимости путем разделения кода и использования абстрактных интерфейсов (например: указатели функции или объектный эквивалент), но разделение обычно добавляет хрупкость. Например, можно назвать модуль через универсальный абстрактный интерфейс для сокращения зависимости от реализации фактического объекта, но необходимо обновить интерфейс в синхронизации с самим объектом, или код перестанет работать во времени выполнения.

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

2
ответ дан 8 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: