Оптимиз. чтение массивов

Тема в разделе "WASM.BEGINNERS", создана пользователем rmn, 30 июн 2005.

Статус темы:
Закрыта.
  1. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.327
    Привет дзенствующим.



    В общем, пишу программку которая обрабатывает массив

    структур (порядка нескольких сотен тысяч элементов).

    Элементы считываются в цикле по индексу и причем этот

    процесс странно протекает: приблиз. первая треть

    обрабатывается практически мнгновенно, а дальше скорость

    резко падает.



    Вопрос 1.

    Причины наблюдаемого явления? :)



    Вопрос 2.

    Как бы этот цикл оптимизировать по скорости и чтобы

    протекал более "линейно".



    Программка на С. Размер структур 16 байт.
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    1. часть данных не помещается в кэшь, поэтому появляются пеняльти при чтении.

    2. использовать предвыборку данных. про это есть в доках amd и intel. наиболее доступный пример IMHO здесь
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    > "Как бы этот цикл оптимизировать по скорости"

    Зависит от того, что ты делаешь с эти массивом. Если последовательное чтение с достаточно быстрой обработкой и записью на старое место, то не знаю как можно существенно ускорить. ИМХО пока кеш не забит полностью, шина работает только на чтение данных из ОЗУ, а пишутся данные в кеш. Когда кеш переполняется шина начинает работать с удвоенной нагрузкой на чтение и запись, поэтому падение скорости видимо неизбежно (если обработка данных производится быстрее чтения\записи). Или я не прав ?
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.327




    Понес домой читать.
     
Статус темы:
Закрыта.