Page MenuHomePhabricator

Improve the performance of tab replacement in common cases

Authored by epriestley on Apr 25 2019, 9:38 PM.



See PHI1210. For certain large inputs, we spend more time than we need to replacing tabs with spaces. Add some fast paths:

  • When a line only has tabs at the beginning of the line, we don't need to do as much work parsing the rest of the line.
  • When a line has no unicode characters, we don't need to vectorize it to get the right result.
Test Plan
  • Added test coverage.
  • Profiled this, got a ~60x performance increase on a 36,000 line 3MB text file.

Diff Detail

rP Phabricator
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

epriestley created this revision.Apr 25 2019, 9:38 PM
epriestley requested review of this revision.Apr 25 2019, 9:39 PM
amckinley accepted this revision.May 16 2019, 12:53 PM
This revision is now accepted and ready to land.May 16 2019, 12:53 PM