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

Контекст:

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

Это'о сравнении различных способов инициализации буфера для некоторого значения. Как что "MemSet» делает для однобайтовых значений. Он сравнил различные реализации (memcpy, явный "за" петляс устройством) и не нашел лучшего кандидата для всех размеров наборов данных и всех компиляторов.

Цитата:

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

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

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

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

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

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

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