CRobin писал(а):1) Каким образом у вас запись с холодного старта имеет минимальную задержку на первом графике? Вас это никак не смущает?
Не сразу заметил. Она там есть. Так просто компонент выводит. Надо чуть в бок сдвинуть.
Система давно не холодная в неё уже всё есть стек выделен и так далее. Так что откуда при 0 замере берётся скачок не ясно. При следующем проходе задержки нет.
У вам время записи растет в пять раз относительно минимального и вас снова это почему то не смущает.
Нет не смущает. Я это объясняю
вытесняющей многозадачностью. Она может не в 5 раз а в 100 раз доходить.
На интервале 1 мс - 4 секунды бесполезно, что либо мерить. многозадачность вносит большие ошибки.
При чем тут кванты времени, вы что отдаете управление между итерациями?
Я не отдаю ОС сама берёт и вытесняет задачу. Вы с этим как боретесь?
Лично я методически не мерить на озвученном диапазоне. Во вторых методическая ошибка хорошо изучена.
При диапазоне менее 1 мс точность доходит до 0.1-0.01% т.е, Меня более чем устраиват
Сейчас ОС не подготавливалась. Задача у меня всегда привязана к 1 ядру. Замер ошибок за 10 секунд.
Размер максимального выброса
Max=0,006701 секунды
dt =0,023198492 секунды - шаг между выбросами
NMax=494 - число выбросов за 10 секунд
Шумновато, если всё по закрывать таких выбросов только 100. А вот если совсем остановить все задачи тогда можно и ниже но я не пробовал.
Добавлено спустя 3 часа 21 минуту 31 секунду:Погонял по мерил. Если код FillChar не гонять, то при первом запуске имеем посадку. Код не попал в кэш. Делаем прогон по коду. Я сделал прогон по статический массив, чтобы со стеком не пересекался - не влиял на кэш данных. Задержка с 300 тактов упала до 40-60 тактов, что равно скорости записи при последующих проходах.
Добавлено спустя 29 минут 5 секунд:Увеличил массив с 40 до 4 000 затем 40 000, чтобы понять где прирост где просадка.
Видимо работает кэш и/или система предсказания(prefetch)
С течением времени её сбивают прерывания и вытесняющая многозадачность.