calloc = malloc + memset

Andi Kleen andi@firstfloor.org
Mon Jun 23 18:20:00 GMT 2014


Marc Glisse <marc.glisse@inria.fr> writes:

> Hello,
>
> this is a stage 1 patch, and I'll ping it then, but if you have
> comments now...

FWIW i believe the transformation will break a large variety of micro benchmarks.

calloc internally knows that memory fresh from the OS is zeroed.
But the memory may not be faulted in yet.

memset always faults in the memory.

So if you have some test like

   buf = malloc(...)
   memset(buf, ...) 
   start = get_time();
   ... do something with buf
   end = get_time()

Now the times will be completely off because the measured times includes
the page faults.

-Andi

-- 
ak@linux.intel.com -- Speaking for myself only



More information about the Gcc-patches mailing list