Привет дзенствующим. В общем, пишу программку которая обрабатывает массив структур (порядка нескольких сотен тысяч элементов). Элементы считываются в цикле по индексу и причем этот процесс странно протекает: приблиз. первая треть обрабатывается практически мнгновенно, а дальше скорость резко падает. Вопрос 1. Причины наблюдаемого явления? Вопрос 2. Как бы этот цикл оптимизировать по скорости и чтобы протекал более "линейно". Программка на С. Размер структур 16 байт.
1. часть данных не помещается в кэшь, поэтому появляются пеняльти при чтении. 2. использовать предвыборку данных. про это есть в доках amd и intel. наиболее доступный пример IMHO здесь
> "Как бы этот цикл оптимизировать по скорости" Зависит от того, что ты делаешь с эти массивом. Если последовательное чтение с достаточно быстрой обработкой и записью на старое место, то не знаю как можно существенно ускорить. ИМХО пока кеш не забит полностью, шина работает только на чтение данных из ОЗУ, а пишутся данные в кеш. Когда кеш переполняется шина начинает работать с удвоенной нагрузкой на чтение и запись, поэтому падение скорости видимо неизбежно (если обработка данных производится быстрее чтения\записи). Или я не прав ?