Состояние функциональности «memset» в C ++ с современными компиляторами

Контекст:

Некоторое время назад я наткнулся на эту статью DDJ 2001 года Александреску:http://www.ddj.com/cpp/184403799

Речь идет о сравнении различных способов инициализации буфера для некоторого значения. Как то, что "memset" делает для однобайтовых значений. Он сравнил различные реализации (memcpy, явный цикл for, устройство Даффа) и не нашел лучшего кандидата для всех размеров наборов данных и всех компиляторов.

Цитата:

В основе всего этого лежит очень глубокая и печальная реализация. Мы в 2001 году, году Пространственной Одиссеи. (...) Просто выйдите из коробки и посмотрите на нас - через 50 лет мы все еще не очень хороши в заполнении и копировании памяти.

Вопрос:У кого-нибудь есть более свежая информация об этой проблеме? Действительно ли последние реализации GCC и Visual C ++ работают значительно лучше, чем 7 лет назад?Я пишу код с временем жизни 5+ (возможно, более 10) лет, которое будет обрабатывать размеры массивов от нескольких байтов до сотен мегабайт. Я не могу предположить, что мой выбор сейчас будет оптимальным через 5 лет. Что я должен делать:а) использовать системный набор настроек (или его эквивалент) и забыть об оптимальной производительности или предположить, что среда выполнения и компилятор справятся с этим за меня.b) раз и навсегда выполнить сравнительный анализ для различных размеров массивов и компиляторов и переключаться во время выполнения между несколькими процедурами.в) запустить эталонный тест при инициализации программы и переключаться во время выполнения на основе точных (?) данных.

Редактировать: я работаю над программным обеспечением для обработки изображений. Мои элементы массива - это PODы, и каждая миллисекунда считается!

Изменить 2: Спасибо за первые ответы, вот некоторые дополнительные сведения:

Инициализация буфера может составлять 20% -40% общего времени выполнения некоторых алгоритмов.Платформа может измениться в ближайшие 5+ лет, хотя она останется в категории «самые быстрые ЦП, которые можно купить у DELL». Компиляторы будут некой формой GCC и Visual C ++. Никаких встроенных вещей или экзотических архитектур на радареЯ хотел бы услышать от людей, которые должны были обновить свое программное обеспечение, когда появились MMX и SSE, так как я должен буду делать то же самое, когда "SSE2015" станет доступным ... :)

Ответы на вопрос(2)

Ваш ответ на вопрос