Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DRAFT] Refactor quant nonmutating #707

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

milseman
Copy link
Member

Refactor off of mutating methods

Refactors mutating methods into string methods for easier unit testing and parity-checking via assertions. Prepares for more efficient implementations.

Doing so creates many small-to-medium regressions, unfortunately, so this should only be done in conjunction with more refactorings and improvements.

Refactors mutating methods into string methods for easier unit testing and parity-checking via assertions. Prepares for more efficient
implementations.

Doing so creates many regressions, unfortunately, so this should only
be done in conjunction with more refactorings and improvements.
@milseman
Copy link
Member Author

This is built on top of #706, which has many improvements.

This refactoring, compared to just #706, has the following perf and regressions. They could be ARC-related, haven't explored exactly what's going on here:

=== Regressions ======================================================================
- CompilerMessages_All_Scalar             73.7ms	69.9ms	3.77ms		5.4%
- EmailRFCNoMatches_All_Scalar            126ms	122ms	3.74ms		3.1%
- CompilerMessages_All                    90.1ms	86.7ms	3.42ms		3.9%
- SubtractionCCC_All                      23ms	20.9ms	2.07ms		9.9%
- DiceRollsInText_All                     42.9ms	41.1ms	1.82ms		4.4%
- BasicCCC_All                            7.32ms	5.93ms	1.38ms		23.3%
- EmojiRegex_All_Scalar                   41.9ms	40.5ms	1.37ms		3.4%
- BasicCCC_All_Scalar                     7.29ms	5.93ms	1.36ms		22.9%
- AnchoredNotFound_All                    14.8ms	13.5ms	1.33ms		9.8%
- DiceRollsInText_All_Scalar              39.9ms	38.6ms	1.31ms		3.4%
- BasicRangeCCC_All                       7.44ms	6.38ms	1.07ms		16.7%
- EmailLookaheadNoMatches_All             24ms	23ms	984µs		4.3%
- InvertedCCC_All_Scalar                  17.6ms	16.7ms	926µs		5.5%
- Numbers_All                             6.73ms	5.8ms	923µs		15.9%
- CaseInsensitiveCCC_All                  7.23ms	6.34ms	893µs		14.1%
- BasicRangeCCC_All_Scalar                7.29ms	6.4ms	884µs		13.8%
- CaseInsensitiveCCC_All_Scalar           7.22ms	6.35ms	871µs		13.7%
- EmailRFC_All                            64.8ms	64ms	820µs		1.3%
- EmailLookaheadNoMatches_All_Scalar      21.4ms	20.7ms	735µs		3.6%
- NotFound_All_Scalar                     6.82ms	6.18ms	643µs		10.4%
- NotFound_All                            7.67ms	7.2ms	468µs		6.5%
- MACAddress                              2.81ms	2.38ms	430µs		18.0%
- EmailRFC_All_Scalar                     45.4ms	45ms	425µs		0.9%
- IntersectionCCC_All                     22.2ms	21.8ms	415µs		1.9%
- SubtractionCCC_All_Scalar               21.4ms	21ms	384µs		1.8%
- AnchoredNotFound_First                  9.13ms	8.78ms	358µs		4.1%
- Numbers_All_Scalar                      5.66ms	5.34ms	319µs		6.0%
- IntersectionCCC_All_Scalar              22.2ms	21.9ms	318µs		1.5%
- Words_All                               12.7ms	12.4ms	316µs		2.5%
- LiteralSearchNotFound_All               6.71ms	6.44ms	271µs		4.2%
- EmailLookahead_All                      19.6ms	19.3ms	263µs		1.4%
- HangulSyllable_All                      6.92ms	6.66ms	261µs		3.9%
- MACAddress_Scalar                       2.49ms	2.25ms	232µs		10.3%
- IPv6Address                             2.78ms	2.56ms	223µs		8.7%
- IPv6Address_Scalar                      2.61ms	2.39ms	216µs		9.0%
- EmailLookahead_All_Scalar               17.3ms	17.1ms	205µs		1.2%
- LiteralSearch_All                       6.89ms	6.7ms	195µs		2.9%
- IPv4Address_Scalar                      2.24ms	2.06ms	186µs		9.0%
- HangulSyllable_All_Scalar               6.11ms	5.92ms	185µs		3.1%
- LiteralSearchNotFound_All_Scalar        5.68ms	5.51ms	172µs		3.1%
- GraphemeBreakNoCap_All_Scalar           2.99ms	2.83ms	161µs		5.7%
- GraphemeBreakNoCap_All                  3.1ms	2.95ms	149µs		5.0%
- EmailBuiltinCharacterClass_All_Scalar   10.3ms	10.2ms	147µs		1.4%
- ReluctantQuantWithTerminal_Whole        5.41ms	5.27ms	147µs		2.8%
- LiteralSearch_All_Scalar                5.87ms	5.73ms	145µs		2.5%
- ReluctantQuantWithTerminal_Whole_Scalar 5.34ms	5.21ms	123µs		2.4%
- Css_All_Scalar                          2.99ms	2.88ms	117µs		4.1%
- IPv4Address                             2.32ms	2.22ms	105µs		4.7%
- EagarQuantWithTerminal_Whole_Scalar     520µs	441µs	79.6µs		18.1%
- Css_All                                 3.31ms	3.23ms	76.2µs		2.4%
- DiceNotation                            4.58ms	4.51ms	75.1µs		1.7%
- EagarQuantWithTerminal_Whole            520µs	451µs	69.2µs		15.3%
- DiceNotation_Scalar                     4.33ms	4.26ms	65.5µs		1.5%
- Lines_All_Scalar                        1.73ms	1.67ms	64µs		3.8%
- Lines_All                               1.77ms	1.72ms	53.1µs		3.1%
=== Improvements =====================================================================
- EmailLookaheadList_Scalar               3.59ms	3.96ms	-370µs		-9.3%
- EmailBuiltinCharacterClass_All          10.5ms	10.7ms	-166µs		-1.6%
- AnchoredNotFound_First_Scalar           5.47ms	5.62ms	-153µs		-2.7%
- EmailLookaheadList                      3.81ms	3.87ms	-54.8µs		-1.4%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant