как избежать многократного чтения большого набора данных.Какие методы используют пользователи C ++ для больших данных, чтобы читать данные «раз и навсегда»?
Недавно я повторил попытку измерения длительности переключения контекста std :: thread (в моей Ubuntu17.10, 64 битный рабочий стол).Мое приложение записало <30 миллионов записей за 10 секунд времени измерения.Я также экспериментировал с более длительным временем измерения и с большими захватами.</p>
В рамках сбора отладочной информации я решил записать промежуточные результаты в текстовый файл для проверки того, что будет входить в анализ.
Код потратил всего 2,3 секунды, чтобы сохранить эту информацию в текстовом файле захвата.Мое оригинальное программное обеспечение затем приступит к анализу.
Но эта задержка с тестированием результатов анализа (> 12 сек = 10 + 2,3) быстро стала утомительной.
Мне показалось, что анализ труден иначе, и я понял, что могу сэкономить времяпутем сбора промежуточных данных и, таким образом, избегая большинства (но не всех) измерений и сбора данных.Таким образом, отладочный захват в промежуточный файл стал удобным разделением для общих усилий.
Часть 2 приложения split считывает промежуточный файл <30 миллионов байт за несколько менее 0,5 секунд, что значительно сокращает цикл разработки анализа (edit-compile-link-run -valu), которая была (обычно) больше не обременена 12+ вторым показателем и генератором данных.</p>
Хотя 28 M байт не являются БОЛЬШИМИ данными, я оценил экономию времени на моих усилиях по разработке кода анализа.
К вашему сведению - мой промежуточный файл содержал по одной букве для каждой записи потокав событие критической секции ».С 10 нитями буквы были «A», «B», ... «J».(напоминает мне о кодировке днк)
Для каждого потока мой анализ поддерживал количество подсчетов на поток.В тех случаях, когда vxWorks «балансирует» потоки, заблокированные на семафоре, Linux НЕ ... что было для меня новостью.
Каждый поток проходил разное количество раз через один критический раздел, но каждый поток получал около10% возможностей.
Техника: простой закодированный текстовый файл с захваченной информацией, готовой для анализа.
Примечание: я ожидал проверить передачу вывода части приложения 1 в часть приложения 2Думаю, все еще мог.WIP.