mirror of
https://gitee.com/openharmony/kernel_linux
synced 2025-04-13 20:51:11 +00:00
[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
@ -1363,7 +1363,7 @@ static void groups_sort(struct group_info *group_info)
|
|||||||
/* a simple bsearch */
|
/* a simple bsearch */
|
||||||
int groups_search(struct group_info *group_info, gid_t grp)
|
int groups_search(struct group_info *group_info, gid_t grp)
|
||||||
{
|
{
|
||||||
int left, right;
|
unsigned int left, right;
|
||||||
|
|
||||||
if (!group_info)
|
if (!group_info)
|
||||||
return 0;
|
return 0;
|
||||||
@ -1371,7 +1371,7 @@ int groups_search(struct group_info *group_info, gid_t grp)
|
|||||||
left = 0;
|
left = 0;
|
||||||
right = group_info->ngroups;
|
right = group_info->ngroups;
|
||||||
while (left < right) {
|
while (left < right) {
|
||||||
int mid = (left+right)/2;
|
unsigned int mid = (left+right)/2;
|
||||||
int cmp = grp - GROUP_AT(group_info, mid);
|
int cmp = grp - GROUP_AT(group_info, mid);
|
||||||
if (cmp > 0)
|
if (cmp > 0)
|
||||||
left = mid + 1;
|
left = mid + 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user