calloc = malloc + memset
Andi Kleen
andi@firstfloor.org
Mon Jun 23 19:37:00 GMT 2014
On Mon, Jun 23, 2014 at 09:00:02PM +0200, Marc Glisse wrote:
> On Mon, 23 Jun 2014, Andi Kleen wrote:
>
> >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.
>
> Good point. I guess working around compiler optimizations is part of
> the game for micro benchmarks, and their authors would be
> disappointed if the compiler didn't mess it up regularly in new and
> entertaining ways ;-)
I would prefer to not do it. I'm not sure it has a lot of benefit.
If you want to keep it please make sure there is an easy way to turn
it off.
-Andi
--
ak@linux.intel.com -- Speaking for myself only.
More information about the Gcc-patches
mailing list