swift
ceee85af - [Source manager] Improve the performance of findBufferContainingLocInternal()

Commit
1 year ago
[Source manager] Improve the performance of findBufferContainingLocInternal() This function was performing a linear scan through the set of known buffers to find the buffer containing a given source location. This linear scan can show up in hot loops, and the number of buffers in a program is increasing due to macros, so this has become a performance problem. Replace the linear scan with a logarithmic lookup into a sorted vector of the buffer IDs, with a one-element most-recently-used cache so that repeated lookups in the same buffer require constant time. This mirrors what we already do with source files in a module. Unfortunately, we cannot reuse that code because there is no link from buffers to source files. We should look to consolidate this in the future. Fixes rdar://116184248.
Author
Committer
Parents
Loading