Это зависит от того, что вы делаете. Если у вас очень специфический случай, вы часто можете значительно превзойти системную libc (и / или компиляцию со встроенным компонентом) из memset и memcpy.
Например, для программы, над которой я работаю, я написал memcpy и memset с 16-байтовым выравниванием, предназначенные для небольших объемов данных. Memcpy был сделан для размеров, кратных 16, больше или равных только 64 (с данными, выровненными по 16), а memset был сделан только для размеров, кратных 128. Эти ограничения позволили мне получить огромную скорость, и, поскольку я контролировал приложение, я мог адаптировать функции именно к тому, что было необходимо, а также адаптировать приложение для выравнивания всех необходимых данных.
memcpy работал примерно в 8-9 раз быстрее, чем встроенный memcpy в Windows, сокращая 460-байтовую копию до 50 тактов. Memset был примерно в 2,5 раза быстрее, чрезвычайно быстро заполняя массив нулей.
Если вас интересуют эти функции, их можно найти здесь ; опуститесь примерно до строки 600 для memcpy и memset. Они довольно тривиальны. Обратите внимание, что они предназначены для небольших буферов, которые должны находиться в кеше; если вы хотите инициализировать огромные объемы данных в памяти, обходя кеш, проблема может быть более сложной.