]> git.baikalelectronics.ru Git - kernel.git/commit
flex_array: avoid divisions when accessing elements
authorJesse Gross <jesse@nicira.com>
Thu, 26 May 2011 23:25:02 +0000 (16:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 May 2011 00:12:33 +0000 (17:12 -0700)
commit753f09ade67bb46e5bc550564e71bb4ceda2ab79
treeef17a945288c333c345643325783f374e10a4020
parentf4c9cb35217b8ccfb14ea7149fba69f5d98e3c24
flex_array: avoid divisions when accessing elements

On most architectures division is an expensive operation and accessing an
element currently requires four of them.  This performance penalty
effectively precludes flex arrays from being used on any kind of fast
path.  However, two of these divisions can be handled at creation time and
the others can be replaced by a reciprocal divide, completely avoiding
real divisions on access.

[eparis@redhat.com: rebase on top of changes to support 0 len elements]
[eparis@redhat.com: initialize part_nr when array fits entirely in base]
Signed-off-by: Jesse Gross <jesse@nicira.com>
Signed-off-by: Eric Paris <eparis@redhat.com>
Cc: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/flex_array.h
lib/flex_array.c