Нет способа ответить на вопрос без измерения. Это будет полностью зависеть от реализации компилятора, процессора и библиотеки времени выполнения.
memset () может быть немного «запахом кода», потому что он может быть подвержен переполнению буфера, аннулированию параметров и имеет неудачную способность очищать только «побайтно». Однако можно с уверенностью сказать, что он будет «самым быстрым» во всех случаях, кроме крайних.
Я склонен использовать макрос, чтобы обернуть это, чтобы избежать некоторых проблем:
#define CLEAR(s) memset(&(s), 0, sizeof(s))
Это обходит расчеты размера и устраняет проблему обмена параметрами длины и значения.
Короче, используйте memset () "под капотом". Напишите, что вы собираетесь, и дайте компилятору позаботиться об оптимизации. Большинство из них невероятно хороши в этом.