Здравствуйте, qweas, Вы писали:
[...]
Q>Выполнив измерения, я получил 20-22 МБайта/сек в худшем случае. То есть демодулятор успевает. А что, если у потока будет меньший приоритет? Или больший? Или еще будет куча процессов запущено других. Как я могу обеспечить более или менее стабильную скорость работы потока на какой-бы то ни было системе? Т.е. взять, запустить на другой машине и сказать: Йо, чувак, демодулятор фигачит где-то 22 Мбайта/секунду.
Винда априори не является системой реального времени. К тому же она может у клиента работать на неизвестном железе и медленном процессоре. Какие временные требования тогда вы к ней выдвигаете? Для того, чтобы вы могли гарантировать время отклика для вашего потока при работе вашего софта у пользователя, необходимо, чтобы вы использовали одну из
RTOS, которая работала бы на поставляемом вами же на железе, которое гарантированно обеспечивает требуемую вам произвоительность.
В вашем же случае вы только лишь можете измерять у клиента производительность работы своего софта, и, если она окажется ниже ожидаемой, просто костатировать, что машина клиента для вашего софта слабовата. Естественно, эта производительность может и не быть постоянной и будет зависеть от набора программ, запущенных на машине клиента.
На данный момент разрабатываемая программа состоит из двух частей: 1) класс, работающий с физическим устройством(приемником) и выдающий цифровой поток 2) класс, выполняющий демодуляцию потока. Поток выдается со скоростью 16 МБайт/сек — скорость стабильная, неизменная(ну если не учитывать дрожания, так сзать). Таким образом, минимальная скорость демодуляции(при условии работы в 1 поток) — 17-18 МБ/сек.
Возникла задача измерить время выполнения процедуры демодуляции. Используют разное: clock, QueryPerformanceCounter, сторонние библиотеки. Подсчитывают время с учетом системного и без учета. Но что это дает? Ок, посчитали сколько "в чистую" выполняется нужный участок лишь нужного нам потока, улучшили по возможности. Но ведь в реальности поток не один.
Выполнив измерения, я получил 20-22 МБайта/сек в худшем случае. То есть демодулятор успевает. А что, если у потока будет меньший приоритет? Или больший? Или еще будет куча процессов запущено других. Как я могу обеспечить более или менее стабильную скорость работы потока на какой-бы то ни было системе? Т.е. взять, запустить на другой машине и сказать: Йо, чувак, демодулятор фигачит где-то 22 Мбайта/секунду.