On 7/13/07, Kirill Korotaev <[EMAIL PROTECTED]> wrote:
This doesn't look worth zeroing half of the struct when it is initialized to non-zeros then.
But why?
My reason to think it's better and faster is that: 1. the code will be shorter if it calls zalloc and then removes the NULL and zero initilization; 2. in the assembly code objdumped, many mov operations reduced, such as: movl $0,0x40(%ebp) ... this style of zero initialization occupies 7 bytes per line (i386), and then multiply 7 lines, 3. the only change is that calls to kmem_cache_zalloc other than kmem_cache_alloc, it's just an extra memset is called, as we all know the memset implimentation is string operation, that's rather fast.
Denis Cheng wrote: >>From 4d87e14b67890f06885a76b5792ca034de2e9d06 Mon Sep 17 00:00:00 2001 > From: Denis Cheng <[EMAIL PROTECTED]> > Date: Thu, 12 Jul 2007 11:53:58 +0800 > Subject: [PATCH] replace kmem_cache_alloc with kmem_cache_zalloc to > remove some following zero initializations. > > Signed-off-by: Denis Cheng <[EMAIL PROTECTED]> > --- > fs/dcache.c | 12 ++---------- > 1 files changed, 2 insertions(+), 10 deletions(-) > > diff --git a/fs/dcache.c b/fs/dcache.c > index 0e73aa0..8c559b2 100644 > --- a/fs/dcache.c > +++ b/fs/dcache.c > @@ -898,7 +898,7 @@ struct dentry *d_alloc(struct dentry * parent, const > struct qstr *name) > struct dentry *dentry; > char *dname; > > - dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL); > + dentry = kmem_cache_zalloc(dentry_cache, GFP_KERNEL); > if (!dentry) > return NULL; > > @@ -921,15 +921,7 @@ struct dentry *d_alloc(struct dentry * parent, > const struct qstr *name) > atomic_set(&dentry->d_count, 1); > dentry->d_flags = DCACHE_UNHASHED; > spin_lock_init(&dentry->d_lock); > - dentry->d_inode = NULL; > - dentry->d_parent = NULL; > - dentry->d_sb = NULL; > - dentry->d_op = NULL; > - dentry->d_fsdata = NULL; > - dentry->d_mounted = 0; > -#ifdef CONFIG_PROFILING > - dentry->d_cookie = NULL; > -#endif > + > INIT_HLIST_NODE(&dentry->d_hash); > INIT_LIST_HEAD(&dentry->d_lru); > INIT_LIST_HEAD(&dentry->d_subdirs);
-- Denis Cheng Linux Application Developer "One of my most productive days was throwing away 1000 lines of code." - Ken Thompson. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/