On 25 Jul 2013, at 09:11, Hans Petter Selasky <h...@bitfrost.no> wrote:

> The structure looks like some size, so bzero() might run faster than memset() 
> depending on the compiler settings. Should be profiled before changed!

They will generate identical code for small structures with known sizes.  Both 
clang and gcc have a simplify libcalls pass that recognises both functions and 
will elide the call in preference to a small set of inline stores.

However(), memset is to be preferred in this idiom because the compiler 
provides better diagnostics in the case of error:

bzero.c:9:22: warning: 'memset' call operates on objects of type 'struct foo'
      while the size is based on a different type 'struct foo *'
      [-Wsizeof-pointer-memaccess]
        memset(f, 0, sizeof(f));
               ~            ^
bzero.c:9:22: note: did you mean to dereference the argument to 'sizeof' (and
      multiply it by the number of elements)?
        memset(f, 0, sizeof(f));
                            ^

The same line with bzero(f, sizeof(f)) generates no error.

David

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to