Count lines in build log slices more cheaply
Summary:
See PHI766. Ref T13164. Build log chunk processing does a preg_split() on slices, but this isn't terribly efficient.
We can get the same count more cheaply by just using substr_count() a few times.
(I also tried preg_match_all(), which was between the two in speed.)
Test Plan:
- Used bin/harbormaster rebuild-log --id X --force to rebuild logs. Verified that the linemap is identical before/after this change.
- Saw local time for the 18MB log in PHI766 drop from ~1.7s to ~900ms, and preg_split() drop out of the profiler (we're now spending the biggest chunk of time on gzdeflate()).
Reviewers: amckinley
Reviewed By: amckinley
Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam
Maniphest Tasks: T13164
Differential Revision: https://secure.phabricator.com/D19545