Conversation
Merging this PR will improve performance by 24.41%
Performance Changes
Comparing Footnotes
|
339ca87 to
524c1b1
Compare
|
and it passed! |
32deeba to
840c848
Compare
|
@cakebaker i can split it into several if you want |
|
GNU testsuite comparison: |
Skip GNU numfmt.pl tests not yet supported: unit-sep-22-fail, grp-1,
grp-2, delim-7, field-1, field-range-err-{1-4,6-13}, strtod-6,
strtod-6.1, leading-4, debug-2, devdebug-{1-7,9-11}, help-1,
fmt-err-9, fmt-err-11, fmt-15, ign-err-5, ign-err-m2.2, ign-err-m3.1.
Also unconditionally refresh binary symlinks to avoid stale builds.
…alidation Fixes GNU numfmt.pl tests: grp-1, grp-2, debug-2, fmt-err-9, fmt-err-11.
Buffer formatted output so that --invalid=fail does not duplicate lines on error, and --invalid=abort streams directly for partial output. Fixes GNU numfmt.pl test: field-3. Re-enables the full numfmt.pl test suite by removing the skip list added earlier in the stack.
Build the grouped string in a single forward pass using chunk iteration instead of reversing, inserting separators, then reversing again. This avoids an extra String allocation and collection.
Remove the trivial single-use helper and simplify split_next_field into a compact 4-line function.
The two match arms for length 1 and length 2 had identical RawSuffix::try_from checks. Unify into a single check after a boolean guard.
Flatten the nested block scope by moving the output trait object and format dispatch to the same level, reducing indentation.
Use the existing print_warning helper for the grouping-no-effect message instead of a one-off writeln with util_name(). Use hardcoded "numfmt:" prefix for the failed-to-convert message to match the other debug warnings. Remove now-unused util_name import.
…o format_and_write
GNU test: numfmt.pl fmt-15
GNU test: numfmt.pl unit-sep-22-fail
GNU test: numfmt.pl devdebug-*, help-1, field-1, field-range-err-*
… and apply_grouping
|
GNU testsuite comparison: |
| // | ||
| // For the full copyright and license information, please view the LICENSE | ||
| // file that was distributed with this source code. | ||
| // spell-checker:ignore behaviour |
There was a problem hiding this comment.
A detail: you could use behavior instead, making this entry obsolete.
| if idx > 0 && &s[..idx] == "." { | ||
| return Some(&s[..idx]); | ||
| } |
There was a problem hiding this comment.
I don't understand why you consider . as a number. Anyway, I would do the check outside of the loop with something like:
if s.starts_with(".") {
return Some(".");
}
@sylvestre yes, please. |
should fix gnu/tests/numfmt/numfmt.pl