mirror of
https://github.com/neovim/neovim
synced 2025-07-16 09:11:51 +00:00
perf(lsp): better binary search mid calculation in semantic token (#22607)
This commit replaces the usage of math.floor((lo + hi) / 2) with the faster and equivalent bit.rshift(lo + hi, 1) for calculating the midpoint in binary search.
This commit is contained in:
@ -44,7 +44,7 @@ local STHighlighter = { active = {} }
|
||||
---@private
|
||||
local function lower_bound(tokens, line, lo, hi)
|
||||
while lo < hi do
|
||||
local mid = math.floor((lo + hi) / 2)
|
||||
local mid = bit.rshift(lo + hi, 1) -- Equivalent to floor((lo + hi) / 2).
|
||||
if tokens[mid].line < line then
|
||||
lo = mid + 1
|
||||
else
|
||||
@ -62,7 +62,7 @@ end
|
||||
---@private
|
||||
local function upper_bound(tokens, line, lo, hi)
|
||||
while lo < hi do
|
||||
local mid = math.floor((lo + hi) / 2)
|
||||
local mid = bit.rshift(lo + hi, 1) -- Equivalent to floor((lo + hi) / 2).
|
||||
if line < tokens[mid].line then
|
||||
hi = mid
|
||||
else
|
||||
|
Reference in New Issue
Block a user