mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
fs/ntfs3: Make binary search to search smaller chunks in beginning
We could try to optimize algorithm to first fill just small table and after that use bigger table all the way up to ARRAY_SIZE(offs). This way we can use bigger search array, but not lose benefits with entry count smaller < ARRAY_SIZE(offs). Signed-off-by: Kari Argillander <kari.argillander@gmail.com> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
162333efa8
commit
ef9297007e
@ -8,6 +8,7 @@
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/buffer_head.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "ntfs.h"
|
||||
@ -679,8 +680,9 @@ static struct NTFS_DE *hdr_find_e(const struct ntfs_index *indx,
|
||||
#ifdef NTFS3_INDEX_BINARY_SEARCH
|
||||
struct NTFS_DE *found = NULL;
|
||||
int min_idx = 0, mid_idx, max_idx = 0;
|
||||
int table_size = 8;
|
||||
int diff2;
|
||||
u16 offs[64];
|
||||
u16 offs[128];
|
||||
|
||||
if (end > 0x10000)
|
||||
goto next;
|
||||
@ -700,7 +702,7 @@ fill_table:
|
||||
off += e_size;
|
||||
|
||||
max_idx++;
|
||||
if (max_idx < ARRAY_SIZE(offs))
|
||||
if (max_idx < table_size)
|
||||
goto fill_table;
|
||||
|
||||
max_idx--;
|
||||
@ -718,6 +720,7 @@ binary_search:
|
||||
return NULL;
|
||||
|
||||
max_idx = 0;
|
||||
table_size = min(table_size * 2, 128);
|
||||
goto fill_table;
|
||||
}
|
||||
} else if (diff2 < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user