From ba1c8d170130e90c8766489c934a9302dc9ffa51 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Mon, 5 Aug 2024 16:17:03 -0300 Subject: [PATCH] feat: Estimate initial middle value for binary search in get_ranked_tags_map --- aider/repomap.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/aider/repomap.py b/aider/repomap.py index e1fd15b69..51a850ef3 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -395,13 +395,21 @@ class RepoMap: chat_rel_fnames = [self.get_rel_fname(fname) for fname in chat_fnames] - dump(max_map_tokens) - - # Guess a small starting number to help with giant repos - middle = min(max_map_tokens // 50, num_tags) - self.tree_cache = dict() + # Estimate initial middle value + sample_size = min(100, num_tags) + sample_tree = self.to_tree(ranked_tags[:sample_size], chat_rel_fnames) + sample_tokens = self.token_count(sample_tree) + + if sample_tokens > 0: + estimated_tags = int((max_map_tokens / sample_tokens) * sample_size) + middle = min(estimated_tags, num_tags) + else: + middle = min(max_map_tokens // 50, num_tags) + + dump(max_map_tokens, sample_size, sample_tokens, estimated_tags, middle) + while lower_bound <= upper_bound: dump(lower_bound, middle, upper_bound)