Skip to content

Instantly share code, notes, and snippets.

@Whateverable
Created December 7, 2016 03:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Whateverable/28dcb535797f4cd5272e62a9ad94386b to your computer and use it in GitHub Desktop.
Save Whateverable/28dcb535797f4cd5272e62a9ad94386b to your computer and use it in GitHub Desktop.
bisectable6
say S:g/d// given 'abc'
Bisecting: 1325 revisions left to test after this (roughly 10 steps)
[ffc79b753553b4ab692b0655237c8f6a770bf450] Remove some =:= from hot paths
»»»»» Testing ffc79b753553b4ab692b0655237c8f6a770bf450
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 96299c7453980b4d9dc8b3f83761c600d3553a3a
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing b4dfed2a86b8af0e46d14b74077d907b49ddf957
»»»»» Script output:
()
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing e08da94d635a356455db04b8a1f6a0689e7be51e
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing aaec5177e293d21febe42cd8e42e208fb99308d0
»»»»» Script output:
()
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 2dd0ddbbc2910564d08a9e0ac0cda15c7c2527fc
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 87bba047a2e0783a0a17bc4ea4e2494f550490b2
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 127b3be424e3119ac6f1aed4673ad0fc1c50fb10
»»»»» Script output:
abc
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is identical
»»»»» Therefore, marking this revision as “old”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 1b956369ab700566b07f2f2e195549d075d040de
»»»»» Script output:
()
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing 41e2572051967dc391de33ea6339b2389bd5728e
»»»»» Script output:
()
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
»»»»» Testing b7201a8f22338a906f2d8027a21387e8f5c77f41
»»»»» Script output:
()
»»»»» Script exit code: 0
»»»»» Bisecting by output
»»»»» Output on “old” revision is:
abc
»»»»» The output is different
»»»»» Therefore, marking this revision as “new”
»»»»» -------------------------------------------------------------------------
b7201a8f22338a906f2d8027a21387e8f5c77f41 is the first new commit
commit b7201a8f22338a906f2d8027a21387e8f5c77f41
Author: Elizabeth Mattijsen <liz@dijkmat.nl>
Date: Sun Oct 23 21:52:51 2016 +0200
Completely re-imagine Str.match internals
Simple matches without any modifying adverbs is about 1.5x faster.
Complicated setups like with :nth(1,3..*), :3x are about 14x faster.
Other mixes of parameters are generally in the 2x to 3x faster range.
Two semantic changes: (see RT #129945): the family of :nth (as in :st,
:nd, :rd and :th) are now lazy and will return whatever they can find.
Before all matches would be cached to find out if enough matches were
found and none would be returned if not enough were found. Please
use an additional :x for that if you want that behaviour. Also, when
using .nth with an iterator using non-monotonically increasing index
values, it will now die, instead of silently not producing the Matchi
object associated with the non-monotonically increasing index value.
How this was done:
- use MMD for handling single adverb calls faster
- rewrite all (private) methods using nqp
- use iterators instead of gather/take combo's
- use new "skip-one" iterator methods wherever possible
- don't use signatures for multiple named variables
- pass $/ to be set around as a parameter
:040000 040000 310922caf347317b45596f65c9a108c5b4ef6836 898eea463f82db6215203f8380e2753429a1a439 M src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment