Page MenuHomePhabricator

Count lines in build log slices more cheaply
ClosedPublic

Authored by epriestley on Jul 27 2018, 8:33 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Nov 23, 3:41 AM
Unknown Object (File)
Tue, Nov 19, 1:54 PM
Unknown Object (File)
Fri, Nov 15, 2:58 AM
Unknown Object (File)
Wed, Nov 13, 9:57 PM
Unknown Object (File)
Mon, Nov 11, 2:38 PM
Unknown Object (File)
Sun, Nov 10, 9:55 AM
Unknown Object (File)
Fri, Nov 8, 10:13 AM
Unknown Object (File)
Wed, Nov 6, 4:57 PM
Subscribers
Restricted Owners Package

Details

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()).

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Owners added a subscriber: Restricted Owners Package.Jul 27 2018, 8:33 PM
This revision is now accepted and ready to land.Jul 29 2018, 4:05 PM

This is also mathematically equivalent to $n_r + $n_n - $n_rn I suppose, but it's probably clearer like this.

This revision was automatically updated to reflect the committed changes.