I don’t see any reason to prefer
memset is a standard C function while
bzero has never been a C standard function. The rationale is probably because you can achieve exactly the same functionality using
Now regarding efficiency, compilers like
gcc use builtin implementations for
memset which switch to a particular implementation when a constant
0 is detected. Same for
glibc when builtins are disabled.