Look, until you have any numbers in hands it's impossible to say which one is faster.
Please measure N d_alloc()'s on i686 and some other archs w/o string operations and compare whether your patch improves something or not. Kirill rae l wrote: > 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); >> >> > > - 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/