All of lore.kernel.org
 help / color / mirror / Atom feed
* memset (was: Redundant memset in AIO read_events)
@ 2003-07-10 10:04 Etienne Lorrain
  2003-07-10 10:19 ` Arjan van de Ven
  0 siblings, 1 reply; 4+ messages in thread
From: Etienne Lorrain @ 2003-07-10 10:04 UTC (permalink / raw)
  To: linux-kernel

 Note that using memset() is better reserved to initialise variable-size
 structures or buffers. Even if memset() is extremely optimised,
 it is still not as fast as not doing anything.

read_events(...) {
   struct io_event ent;
   memset(&ent, 0, sizeof(ent));
   while (...) {
      aio_read_evt(ctx, &ent);
   }
   ...
}

 Should be written (when "ent" has to be cleared):
read_events(...) {
   struct io_event ent = {};
   while (...) {
      aio_read_evt(ctx, &ent);
   }
   ...
}

  Just compare the code generated by (using GCC):
   struct io_event ent;
   memset(&ent, 0, sizeof(ent));
   ent.data = 0;
   if (ent.obj != 0) printf ("bad");

  And:
   struct io_event ent = {};
   ent.data = 0;
   if (ent.obj != 0) printf ("bad");

  and that is even without speaking of complete variable elimination
 when the structure is not used, unknown pointer alignement when
 memset function is not inlined, or aliasing optimisation.

  Etienne.

___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-07-10 10:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20030710100417.83333.qmail@web11801.mail.yahoo.com.suse.lists.linux.kernel>
     [not found] ` <1057832361.5817.2.camel@laptop.fenrus.com.suse.lists.linux.kernel>
2003-07-10 10:29   ` memset (was: Redundant memset in AIO read_events) Andi Kleen
2003-07-10 10:33     ` Arjan van de Ven
2003-07-10 10:04 Etienne Lorrain
2003-07-10 10:19 ` Arjan van de Ven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.