[PATCH] Use unsigned int types for a faster bsearch
This patch avoids arithmetic on 'signed' types that are slower than 'unsigned'. This saves space and cpu cycles. size of kernel/sys.o before the patch (gcc-3.4.5) text data bss dec hex filename 10924 252 4 11180 2bac kernel/sys.o size of kernel/sys.o after the patch text data bss dec hex filename 10903 252 4 11159 2b97 kernel/sys.o I noticed that gcc-4.1.0 (from Fedora Core 5) even uses idiv instruction for (a+b)/2 if a and b are signed. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
34f361ade2
commit
d74beb9f33
1 changed files with 2 additions and 2 deletions
|
@ -1363,7 +1363,7 @@ static void groups_sort(struct group_info *group_info)
|
|||
/* a simple bsearch */
|
||||
int groups_search(struct group_info *group_info, gid_t grp)
|
||||
{
|
||||
int left, right;
|
||||
unsigned int left, right;
|
||||
|
||||
if (!group_info)
|
||||
return 0;
|
||||
|
@ -1371,7 +1371,7 @@ int groups_search(struct group_info *group_info, gid_t grp)
|
|||
left = 0;
|
||||
right = group_info->ngroups;
|
||||
while (left < right) {
|
||||
int mid = (left+right)/2;
|
||||
unsigned int mid = (left+right)/2;
|
||||
int cmp = grp - GROUP_AT(group_info, mid);
|
||||
if (cmp > 0)
|
||||
left = mid + 1;
|
||||
|
|
Loading…
Reference in a new issue