josh11b and Jon Ross-Perkins
fada410559
Support declaration modifier keywords ( #3412 )
...
Co-authored-by: Jon Ross-Perkins <jperkins@google.com >
2023-12-05 22:45:57 +00:00
Richard Smith
22dff46ed2
Remove support for disambiguating a stringified type as being a type. ( #3456 )
...
Most of the calls to `StringifyType` already passed `true` for
`in_type_context`. Checking the rest, I found that every one of them was
already sufficiently clear that they were printing a type, or could be
made so with a very small change to the diagnostic text.
2023-12-05 17:34:04 +00:00
Richard Smith
433d626b04
Rename SemIR::{Base,Field} -> SemIR::{Base,Field}Decl. ( #3452 )
...
Also fix printing of unbound element type to say "element" not "field"
since we're touching all the relevant SemIR output anyway.
2023-12-05 16:37:02 +00:00
Richard Smith
7dffa0c7ec
Support for base: T;, .base, x.base. ( #3450 )
...
No support for `extend base` yet, in an effort to minimize collisions
with #3412 .
2023-12-04 22:45:59 +00:00
Jon Ross-Perkins
30155dbb72
Add support for 'package' in expressions. ( #3445 )
...
This creates a namespace for `package` scope.
It looks like names of class_decls in namespaces lead to an unexpected
instref. This is already true, as best as I can tell. I'm not sure if
there's a preferred approach to address that, so I've left a TODO for
now.
2023-12-04 21:05:41 +00:00
josh11b
1c4a35c76b
Remove llvm::StringRef from diagnostic example ( #3451 )
...
To match new guidance to avoid lifetime issues (now documented at
https://docs.google.com/document/d/1RRYMm42osyqhI2LyjrjockYCutQ5dOf8Abu50kTrkX0/edit?resourcekey=0-kHyqOESbOHmzZphUbtLrTw#heading=h.nlcon9stg5pg
)
2023-12-04 16:10:38 +00:00
Jon Ross-Perkins and Richard Smith
962defd1e8
Associate a name with ClassDecl ( #3447 )
...
Note generics will probably need different behavior.
---------
Co-authored-by: Richard Smith <richard@metafoo.co.uk >
2023-12-02 00:44:57 +00:00
Richard Smith
ca53c18ddc
Rename MemberIndex -> ElementIndex, ClassFieldAccess -> ClassElementAccess, UnboundFieldType -> UnboundElementType. ( #3446 )
...
In preparation for base class support, where these types will be used
for bases as well as fields.
As discussed [on
discord](https://discord.com/channels/655572317891461132/963846118964350976/1180267686316478575 ).
2023-12-02 00:29:48 +00:00
Richard Smith and Jon Ross-Perkins
9c46d15f78
Distribute autoupdate across threads. ( #3443 )
...
Also switch how we ensure that stdin is closed for tests, so that `bazel
run` doesn't hang if invoked manually.
---------
Co-authored-by: Jon Ross-Perkins <jperkins@google.com >
2023-12-02 00:26:16 +00:00
Geoff Romer
b8d4e2f41b
Binding pattern naming cleanup ( #3410 )
...
- Rename `PatternBinding` to `BindingPattern`.
- Use `BindingPattern` rather than `Pattern` in the names of
binding-pattern-specific parse states.
2023-12-01 21:36:51 +00:00
Jon Ross-Perkins
132807e138
Refactor ValueStore to reduce template type repetition. ( #3437 )
...
There's a trade-off here of explicitness in the use versus repetition,
but I'm hoping the Id offers sufficient info (also, some Ids already
relied on this, so this builds consistency). The forward declarations
I'm mixed on, but they are difficult to avoid if heading down this route
due to interdependencies between ids and types which contain ids.
2023-12-01 02:10:02 +00:00
Jon Ross-Perkins
aa5bfa564f
Add a distinct semir file separator. ( #3438 )
...
This removes the filename from the file-scoped block, and places it
above to make it clear where the full SemIR begins (with multifile,
providing a barrier between).
2023-12-01 00:53:45 +00:00
Richard Smith
c6bc2cbb3d
Rename IndexBase -> IdBase, ComparableIndexBase -> IndexBase. ( #3436 )
...
This reflects how we're naming classes that derive from these classes,
and matches usage for each existing `Id` and `Index` type, except:
- `Parse::NodeId` previously inherited from `ComparableIndexBase`, and
is no longer comparable.
- `SemIR::MemberIndex` previously inherited from `IndexBase`, and is now
comparable.
Making `Parse::NodeId` non-comparable reflects that it's intended to be
an opaque identifier for a node and that the ordering is an
implementation detail rather than part of the intended public interface.
`PostorderIterator` and `SiblingIterator` still rely on the numerical
meaning of `NodeId`s, but that's OK since they're part of the node
implementation.
2023-11-30 18:50:59 +00:00
Jon Ross-Perkins
05723095bc
Switch formatv adapters to format_provider ( #3434 )
...
The main difference I'm aiming for is that clangd doesn't complain about
the struct being unused, but it does miss the function's use. But really
these are specific to formatv for diagnostics, so this is more clearly
marking such, and probably makes for a better pattern for the future.
2023-11-30 18:33:03 +00:00
Jon Ross-Perkins
0db63ff17a
Abbreviate Integer and FloatingPoint ( #3435 )
...
I was suggesting this because `FloatingPoint` is pretty long. `int` and
`float` should be familiar abbreviations. `unsigned` should be familiar
to developers too, but `UnsignedInt` still feels usefully clearer for
the additional chars.
2023-11-29 23:29:48 +00:00
Jon Ross-Perkins and Richard Smith
0d618b1278
Tidy up lint issues. ( #3429 )
...
These are manual fixes; mostly from clang-tidy, some from clangd (which
notes unused includes).
In typed_insts, adding inlline due to misc-definitions-in-headers. Per
discussion, clang-tidy is wrong, but inline silences it.
For parameter name skew in definition versus declaration, I'm just using
the name from the definition.
---------
Co-authored-by: Richard Smith <richard@metafoo.co.uk >
2023-11-29 20:41:53 +00:00
Richard Smith
eae630a3db
Rename Lex::{Token,Line} -> Lex::{Token,Line}Index. ( #3433 )
...
As discussed [on
discord](https://discord.com/channels/655572317891461132/655578254970716160/1178878128714678282 )
and today's toolchain discussion.
2023-11-29 20:33:58 +00:00
Richard Smith
332a368cee
Rename Parse::Node -> Parse::NodeId. ( #3432 )
...
As discussed [on
discord](https://discord.com/channels/655572317891461132/655578254970716160/1178878128714678282 )
and today's toolchain discussion.
2023-11-29 18:53:12 +00:00
Jon Ross-Perkins and Chandler Carruth
0c0998d7cd
Error when passing StringRef to CARBON_DIAGNOSTIC. ( #3431 )
...
This gets to a lifetime subtlety, particularly with things like the
sorting diagnostic consumer that delay output. In order to reduce the
chance of accidental references, disallow StringRef in the diagnostics.
For example:
```
./toolchain/diagnostics/diagnostic_emitter.h:162:5: error: static_assert failed due to requirement '!std::is_same_v<llvm::StringRef, llvm::StringRef>' "Use std::string or llvm::StringLiteral for diagnostic lifetimes."
static_assert(
^
toolchain/check/convert.cpp:477:11: note: in instantiation of member function 'Carbon::Internal::DiagnosticBase<std::string, std::string, llvm::StringRef>::DiagnosticBase' requested here
CARBON_DIAGNOSTIC(StructInitMissingFieldInConversion, Error,
^
./toolchain/diagnostics/diagnostic_emitter.h:47:7: note: expanded from macro 'CARBON_DIAGNOSTIC'
::Carbon::Internal::DiagnosticBase<__VA_ARGS__>( \
^
```
---------
Co-authored-by: Chandler Carruth <chandlerc@gmail.com >
2023-11-29 17:04:11 +00:00
Jon Ross-Perkins
161f46ed37
FloatingPointLiteral to RealLiteral fixup ( #3430 )
2023-11-29 17:00:03 +00:00
Jon Ross-Perkins
3f208e27f9
Align on FileStart/FileEnd for naming. ( #3428 )
...
The lexer has been using EndOfFile form (stemming from EOF), parser went
to FileEnd form. This consolidates on FileEnd form.
2023-11-29 16:36:57 +00:00
Jon Ross-Perkins
239f8030a4
Pass imports to SemIR. ( #3415 )
...
This adds instructions so that we get printing. I may adjust the
instruction format a little further to add a type, but I think the basic
setup will remain.
Note this builds on #3414
2023-11-28 19:55:38 +00:00
Jon Ross-Perkins
35d15a390c
Remove nodiscard uses. ( #3418 )
...
Per [#toolchain
discussion](https://discord.com/channels/655572317891461132/655578254970716160/1176632520834560211 )
We'd at one point been trying to put `[[nodiscard]]` everywhere, but
then we stopped because it had felt verbose without finding many issues
(plus, people plain forgot to add it). Some history in #888 .
Since newer code gets added without it, we now have code like:
```
auto GetLineInfo(Line line) -> LineInfo&;
[[nodiscard]] auto GetLineInfo(Line line) const -> const LineInfo&;
auto AddLine(LineInfo info) -> Line;
auto GetTokenInfo(Token token) -> TokenInfo&;
[[nodiscard]] auto GetTokenInfo(Token token) const -> const TokenInfo&;
auto AddToken(TokenInfo info) -> Token;
[[nodiscard]] auto GetTokenPrintWidths(Token token) const -> PrintWidths;
```
Here, the lack of `[[nodiscard]]` doesn't mean anything: for example,
`GetLineInfo` should not have its result discarded if it's called. But
the mix could be confusing for readers.
As a resolution, remove the attribute. `[[nodiscard]]` should be treated
like other attributes going forward, which essentially means "avoid in
general, add a comment to explain why the attribute is needed" rather
than use-as-default.
2023-11-28 18:46:19 +00:00
josh11b
a307e7a72a
Rename files to use "expr" and "deref" ( #3426 )
...
Follows #3425 and #3375 .
2023-11-28 17:11:35 +00:00
Jon Ross-Perkins
7f53a792c0
Fix crash when array contents aren't an expression. ( #3424 )
...
FloatingPointLiteral wrap is a clang-format thing. I didn't touch it
manually.
2023-11-27 23:35:01 +00:00
josh11b
c89c452579
Abbreviate "Reference" -> "Ref", "Dereference" -> "Deref" ( #3425 )
...
Part of switching to the [abbreviations we've decided to
use](https://docs.google.com/document/d/1RRYMm42osyqhI2LyjrjockYCutQ5dOf8Abu50kTrkX0/edit?resourcekey=0-kHyqOESbOHmzZphUbtLrTw#heading=h.pph7i5m5un7q ).
File renames will be done separately.
2023-11-27 23:30:31 +00:00
Jacob Schneider
1d443a3617
Underline the entire token when producing diagnostic messages. ( #3413 )
...
This is an incremental improvement on our diagnostic messages that
simply underlines an entire token if the token is larger than 1 char
(else it points to the single char with a caret like it used to).
2023-11-27 16:36:26 +00:00
Richard Smith
790a5f93c7
Fix minor typos / grammar errors in the driver. ( #3420 )
2023-11-22 23:52:08 +00:00
Jon Ross-Perkins
5522e4f613
Switch cross references to a ValueStore. ( #3414 )
...
As I get ready to add imports, I need an API to add values and this
offers a consistent way of doing so.
2023-11-22 21:43:17 +00:00
Richard Smith and Chandler Carruth
9154c6410e
Support for reading source code from stdin and other unusual places. ( #3416 )
...
- Treat an input of `-` as meaning stdin.
- Fix building of an llvm::MemoryBuffer from a non-regular file.
- Do not enforce filename restrictions on non-regular files.
- Do not invent an output file name based on the name of a non-regular
file.
---------
Co-authored-by: Chandler Carruth <chandlerc@gmail.com >
2023-11-22 03:48:10 +00:00
Jon Ross-Perkins
a204689893
Use more specific node kinds for literals. ( #3419 )
...
Sounding out the approach, to make it clearer what a literal node
corresponds to.
2023-11-22 01:27:28 +00:00
Jon Ross-Perkins
9d369db8ea
Diagnose incorrect file extensions. ( #3409 )
...
Note this is building on #3408
2023-11-20 23:49:10 +00:00
Jon Ross-Perkins
456d165258
Diagnose repeat Main//default files as a redundant api file. ( #3408 )
2023-11-17 20:10:56 +00:00
josh11b
df9494a948
Restore interface declaration parse test ( #3406 )
...
The declaration test was made the same as the empty body test in #2649 .
This change restores it to test parsing a forward declaration of an
interface.
2023-11-16 18:48:39 +00:00
Chandler Carruth
d3eae6d1f0
Fix a crash on invalid found by fuzzing. ( #3404 )
...
When a `namespace` keyword has no `;` following it, we recover by
building a parse tree `Namespace` node from the `Namespace` token (as
there isn't a `;` token). Allow this correspondence on errors.
Also teach the diagnostics in this case to avoid the end-of-file token
as that's almost always going to be a less meaningful location. Instead,
we can point at the introducer which should at least be in the code that
led to the error.
2023-11-16 18:26:39 +00:00
Jon Ross-Perkins
204c04dbb9
Add more package and import support. ( #3402 )
...
This should cover:
```
library "lib" api;
import Foo library default;
import library default;
import library "lib";
```
This splits out `PackageName` and `LibraryName` to their own parse nodes
so that checking can ignore them and still get a balanced parse tree
(otherwise, we essentially need to implement handling of the parse nodes
only to remove the identifiers/string literals -- the optional names
mean we can't blindly do that as before). For reference, these nodes
don't need to be handled because CheckParseTree will need to directly
funnel import information along with checked IRs.
2023-11-16 17:09:36 +00:00
josh11b and Richard Smith
d21e7b4f14
Detect duplicate member names in struct and struct type literals ( #3395 )
...
A struct with the same member name twice can cause a `CARBON_CHECK`
failure later when it is used (problem found by fuzzing).
---------
Co-authored-by: Richard Smith <richard@metafoo.co.uk >
2023-11-15 06:12:03 +00:00
josh11b
7d8afed6f7
Abbreviate "Initialization" -> "Init" ( #3398 )
...
Part of switching to the [abbreviations we've decided to
use](https://docs.google.com/document/d/1RRYMm42osyqhI2LyjrjockYCutQ5dOf8Abu50kTrkX0/edit?resourcekey=0-kHyqOESbOHmzZphUbtLrTw#heading=h.pph7i5m5un7q ).
2023-11-15 05:36:16 +00:00
josh11b
7af364c12c
Don't abbreviate 'element' ( #3400 )
...
Decision:
https://discord.com/channels/655572317891461132/655578254970716160/1174103988317212692
2023-11-15 05:24:09 +00:00
josh11b
729ea69385
parameter -> param file renaming (#3397 )
...
Finishes work started in #3392
2023-11-14 22:29:16 +00:00
Jon Ross-Perkins and Richard Smith
d024403dc4
Refactor checking flow to allow for ordering based on import/package. ( #3379 )
...
As I was working on this, I noticed `import` and `library` syntax needs
to be fixed for how it imports the current package, and for `Main`
libraries. This mostly reflects the current state in its testing.
Otherwise, this should handle most of the errors I could think of:
dependency cycles, redundant imports, etc.
It does not actually deal with the nuances of cross-IR references.
---------
Co-authored-by: Richard Smith <richard@metafoo.co.uk >
2023-11-14 22:24:03 +00:00
Richard Smith and Jon Ross-Perkins
2715e2276e
Parsing and basic checking for abstract class and base class. ( #3385 )
...
For now, we require the same introducer to be used each time a class is
declared, but see #3384 .
---------
Co-authored-by: Jon Ross-Perkins <jperkins@google.com >
2023-11-13 20:38:21 +00:00
Richard Smith
49591d1360
Add some testing that self and Self don't conflict with r#self and r#Self. ( #3381 )
2023-11-13 20:24:07 +00:00
josh11b and Jon Ross-Perkins
c53b248800
Abbreviate "parameter" -> "param" ( #3392 )
...
Part of switching to the [abbreviations we've decided to
use](https://docs.google.com/document/d/1RRYMm42osyqhI2LyjrjockYCutQ5dOf8Abu50kTrkX0/edit?resourcekey=0-kHyqOESbOHmzZphUbtLrTw#heading=h.pph7i5m5un7q ).
I will rename files in a follow-up PR.
---------
Co-authored-by: Jon Ross-Perkins <jperkins@google.com >
2023-11-13 19:06:54 +00:00
josh11b
522dcc44c5
Finish "declaration" -> "decl" ( #3391 )
...
Some new uses of "declaration" introduced in #3374 were missed in #3382
since #3374 was still in flight.
2023-11-13 16:01:40 +00:00
Jacob Schneider
482d233def
fix crash caused by unicode chars ( #3387 )
...
Prevent a crash during lexing for unicode chars.
2023-11-11 06:27:15 +00:00
Richard Smith
abedf08816
Reduce the compile time of the typed_insts_test by a further 40% or so. ( #3390 )
...
Move the non-dependent portions of templates out into separate functions
so that we don't need to repeatedly generate code for them.
2023-11-11 00:31:55 +00:00
josh11b
109e7889dd
Rename files to use abbreviations ( #3389 )
...
Reflects these recent PRs:
* #3375
* #3382
2023-11-11 00:25:40 +00:00
Jon Ross-Perkins and Chandler Carruth
cafcd88882
Split lexing logic and storage to separate files. ( #3365 )
...
Just reorganizing logic a little, trying to mirror the direction we've
gone with check, lower, etc. That is, lex.h contains a function `Lex`
that is used directly.
Note, I'm avoiding making meaningful changes here. It could in theory
still affect inlining in benchmarks, but I'm not seeing an impact.
Before:
```
------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------------------
BM_ValidKeywords 2784949 ns 2784867 ns 249 bytes_per_second=214.452M/s tokens_per_second=35.9084M/s
BM_ValidKeywordsAsRawIdentifiers 3222597 ns 3222551 ns 210 bytes_per_second=244.513M/s tokens_per_second=31.0313M/s
BM_RawIdentifierFocus 5907836 ns 5907518 ns 103 bytes_per_second=264.873M/s tokens_per_second=16.9276M/s
BM_ValidIdentifiers<1, 64, false> 6255128 ns 6254297 ns 105 bytes_per_second=235.488M/s tokens_per_second=15.989M/s
BM_ValidIdentifiers<1, 1, true> 3677630 ns 3677398 ns 192 bytes_per_second=77.7999M/s tokens_per_second=27.1931M/s
BM_ValidIdentifiers<3, 5, true> 5427693 ns 5427116 ns 110 bytes_per_second=105.434M/s tokens_per_second=18.426M/s
BM_ValidIdentifiers<3, 16, true> 5063246 ns 5062761 ns 115 bytes_per_second=216.623M/s tokens_per_second=19.7521M/s
BM_ValidIdentifiers<12, 64, true> 5518589 ns 5518118 ns 100 bytes_per_second=691.264M/s tokens_per_second=18.1221M/s
BM_ValidIdentifiers<16, 16, true> 4890776 ns 4890782 ns 112 bytes_per_second=350.989M/s tokens_per_second=20.4466M/s
BM_ValidIdentifiers<24, 24, true> 4974729 ns 4974582 ns 112 bytes_per_second=498.444M/s tokens_per_second=20.1022M/s
BM_ValidIdentifiers<32, 32, true> 5517583 ns 5517085 ns 99 bytes_per_second=587.718M/s tokens_per_second=18.1255M/s
BM_ValidIdentifiers<48, 48, true> 5914759 ns 5914222 ns 94 bytes_per_second=806.255M/s tokens_per_second=16.9084M/s
BM_ValidIdentifiers<64, 64, true> 7556040 ns 7556036 ns 77 bytes_per_second=833.009M/s tokens_per_second=13.2345M/s
BM_ValidIdentifiers<80, 80, true> 7739113 ns 7737696 ns 76 bytes_per_second=1010.65M/s tokens_per_second=12.9237M/s
BM_HorizontalWhitespace/1 5015062 ns 5014443 ns 108 bytes_per_second=114.111M/s tokens_per_second=19.9424M/s
BM_HorizontalWhitespace/4 5165496 ns 5165425 ns 111 bytes_per_second=166.163M/s tokens_per_second=19.3595M/s
BM_HorizontalWhitespace/16 5616796 ns 5616447 ns 102 bytes_per_second=356.578M/s tokens_per_second=17.8049M/s
BM_HorizontalWhitespace/64 7912904 ns 7912346 ns 78 bytes_per_second=831.648M/s tokens_per_second=12.6385M/s
BM_HorizontalWhitespace/128 11086218 ns 11083155 ns 57 bytes_per_second=1.11759G/s tokens_per_second=9.0227M/s
BM_RandomSource 4796549 ns 4795733 ns 145 bytes_per_second=216.783M/s lines_per_second=6.61943M/s tokens_per_second=20.8519M/s
BM_GroupingSymbols/1/0/0 3937151 ns 3936581 ns 176 bytes_per_second=216.914M/s lines_per_second=19.0521M/s tokens_per_second=25.4028M/s
BM_GroupingSymbols/2/0/0 3000029 ns 2999506 ns 239 bytes_per_second=243.125M/s lines_per_second=27.7812M/s tokens_per_second=33.3388M/s
BM_GroupingSymbols/3/0/0 2729059 ns 2728834 ns 251 bytes_per_second=261.26M/s lines_per_second=32.065M/s tokens_per_second=36.6457M/s
BM_GroupingSymbols/4/0/0 2432363 ns 2432209 ns 291 bytes_per_second=304.738M/s lines_per_second=37.0034M/s tokens_per_second=41.1149M/s
BM_GroupingSymbols/8/0/0 2144080 ns 2143967 ns 326 bytes_per_second=468.547M/s lines_per_second=44.0468M/s tokens_per_second=46.6425M/s
BM_GroupingSymbols/16/0/0 2290055 ns 2289711 ns 308 bytes_per_second=741.709M/s lines_per_second=42.3866M/s tokens_per_second=43.6736M/s
BM_GroupingSymbols/32/0/0 3102790 ns 3102186 ns 220 bytes_per_second=1027.1M/s lines_per_second=31.7437M/s tokens_per_second=32.2353M/s
BM_GroupingSymbols/0/1/0 3406964 ns 3406421 ns 207 bytes_per_second=222.677M/s lines_per_second=7.33908M/s tokens_per_second=29.3563M/s
BM_GroupingSymbols/0/2/0 2244101 ns 2244006 ns 312 bytes_per_second=239.985M/s lines_per_second=7.42689M/s tokens_per_second=44.5632M/s
BM_GroupingSymbols/0/3/0 1976449 ns 1976080 ns 347 bytes_per_second=216M/s lines_per_second=6.32566M/s tokens_per_second=50.6052M/s
BM_GroupingSymbols/0/4/0 1600539 ns 1600325 ns 429 bytes_per_second=224.777M/s lines_per_second=6.24873M/s tokens_per_second=62.4873M/s
BM_GroupingSymbols/0/8/0 1085044 ns 1084941 ns 646 bytes_per_second=222.765M/s lines_per_second=5.12009M/s tokens_per_second=92.1709M/s
BM_GroupingSymbols/0/16/0 824804 ns 824756 ns 817 bytes_per_second=209.166M/s lines_per_second=3.5659M/s tokens_per_second=121.248M/s
BM_GroupingSymbols/0/32/0 685741 ns 685741 ns 1004 bytes_per_second=196.576M/s lines_per_second=2.20929M/s tokens_per_second=145.828M/s
BM_GroupingSymbols/0/0/1 3467507 ns 3467077 ns 206 bytes_per_second=218.781M/s lines_per_second=7.21069M/s tokens_per_second=28.8427M/s
BM_GroupingSymbols/0/0/2 2284154 ns 2283937 ns 309 bytes_per_second=235.79M/s lines_per_second=7.29705M/s tokens_per_second=43.784M/s
BM_GroupingSymbols/0/0/3 1965548 ns 1965225 ns 356 bytes_per_second=217.193M/s lines_per_second=6.36059M/s tokens_per_second=50.8848M/s
BM_GroupingSymbols/0/0/4 1623965 ns 1623725 ns 440 bytes_per_second=221.538M/s lines_per_second=6.15868M/s tokens_per_second=61.5868M/s
BM_GroupingSymbols/0/0/8 1080601 ns 1080452 ns 650 bytes_per_second=223.691M/s lines_per_second=5.14137M/s tokens_per_second=92.5539M/s
BM_GroupingSymbols/0/0/16 840820 ns 840677 ns 828 bytes_per_second=205.205M/s lines_per_second=3.49837M/s tokens_per_second=118.952M/s
BM_GroupingSymbols/0/0/32 707793 ns 707734 ns 991 bytes_per_second=190.467M/s lines_per_second=2.14063M/s tokens_per_second=141.296M/s
BM_GroupingSymbols/32/1/0 2804159 ns 2803869 ns 245 bytes_per_second=1103.7M/s lines_per_second=34.0779M/s tokens_per_second=35.665M/s
BM_GroupingSymbols/32/2/0 2676229 ns 2675855 ns 261 bytes_per_second=1123.78M/s lines_per_second=34.688M/s tokens_per_second=37.3712M/s
BM_GroupingSymbols/32/3/0 2652102 ns 2651836 ns 262 bytes_per_second=1103.24M/s lines_per_second=34.0217M/s tokens_per_second=37.7097M/s
BM_GroupingSymbols/32/4/0 2600677 ns 2600552 ns 268 bytes_per_second=1096.17M/s lines_per_second=33.7678M/s tokens_per_second=38.4534M/s
BM_GroupingSymbols/32/8/0 2382017 ns 2381869 ns 294 bytes_per_second=1083.42M/s lines_per_second=33.2659M/s tokens_per_second=41.9838M/s
BM_GroupingSymbols/32/16/0 2102340 ns 2102243 ns 325 bytes_per_second=1034.45M/s lines_per_second=31.5377M/s tokens_per_second=47.5682M/s
BM_GroupingSymbols/32/32/0 1745079 ns 1744914 ns 403 bytes_per_second=952.64M/s lines_per_second=28.6461M/s tokens_per_second=57.3094M/s
BM_GroupingSymbols/32/32/1 1701414 ns 1701255 ns 415 bytes_per_second=962.73M/s lines_per_second=28.9228M/s tokens_per_second=58.7802M/s
BM_GroupingSymbols/32/32/2 1688503 ns 1688121 ns 415 bytes_per_second=957.019M/s lines_per_second=28.7242M/s tokens_per_second=59.2375M/s
BM_GroupingSymbols/32/32/3 1679701 ns 1679499 ns 419 bytes_per_second=948.651M/s lines_per_second=28.446M/s tokens_per_second=59.5416M/s
BM_GroupingSymbols/32/32/4 1647815 ns 1647816 ns 427 bytes_per_second=953.342M/s lines_per_second=28.559M/s tokens_per_second=60.6864M/s
BM_GroupingSymbols/32/32/8 1581283 ns 1581075 ns 450 bytes_per_second=942.39M/s lines_per_second=28.1201M/s tokens_per_second=63.2481M/s
BM_GroupingSymbols/32/32/16 1445591 ns 1445526 ns 477 bytes_per_second=936.105M/s lines_per_second=27.7442M/s tokens_per_second=69.179M/s
BM_GroupingSymbols/32/32/32 1296335 ns 1296094 ns 544 bytes_per_second=882.943M/s lines_per_second=25.8276M/s tokens_per_second=77.1549M/s
BM_BlankLines/1 5774442 ns 5774454 ns 107 bytes_per_second=99.0921M/s lines_per_second=17.3175M/s tokens_per_second=17.3177M/s
BM_BlankLines/4 8712135 ns 8711977 ns 75 bytes_per_second=98.5198M/s lines_per_second=45.9133M/s tokens_per_second=11.4785M/s
BM_BlankLines/16 32313782 ns 32307655 ns 22 bytes_per_second=61.9884M/s lines_per_second=49.5234M/s tokens_per_second=3.09524M/s
BM_BlankLines/64 87562163 ns 87543476 ns 7 bytes_per_second=75.166M/s lines_per_second=73.1058M/s tokens_per_second=1.14229M/s
BM_BlankLines/128 160336428 ns 160298644 ns 4 bytes_per_second=79.1257M/s lines_per_second=79.8502M/s tokens_per_second=623.836k/s
BM_CommentLines/1/0/0 7298959 ns 7298427 ns 89 bytes_per_second=117.601M/s lines_per_second=27.4029M/s tokens_per_second=13.7016M/s
BM_CommentLines/4/0/0 10002223 ns 10002239 ns 67 bytes_per_second=171.622M/s lines_per_second=49.9883M/s tokens_per_second=9.99776M/s
BM_CommentLines/128/0/0 143356660 ns 143356412 ns 5 bytes_per_second=259.444M/s lines_per_second=89.9846M/s tokens_per_second=697.562k/s
BM_CommentLines/1/30/0 7421994 ns 7421289 ns 87 bytes_per_second=501.166M/s lines_per_second=26.9492M/s tokens_per_second=13.4747M/s
BM_CommentLines/4/30/0 11304903 ns 11303972 ns 56 bytes_per_second=1.13696G/s lines_per_second=44.2318M/s tokens_per_second=8.84645M/s
BM_CommentLines/128/30/0 156244144 ns 156217089 ns 4 bytes_per_second=2.52178G/s lines_per_second=82.5766M/s tokens_per_second=640.135k/s
BM_CommentLines/1/70/0 7486688 ns 7485340 ns 80 bytes_per_second=1006.49M/s lines_per_second=26.7186M/s tokens_per_second=13.3594M/s
BM_CommentLines/4/70/0 14762881 ns 14761417 ns 45 bytes_per_second=1.88011G/s lines_per_second=33.8717M/s tokens_per_second=6.77442M/s
BM_CommentLines/128/70/0 179933089 ns 179903592 ns 4 bytes_per_second=4.84025G/s lines_per_second=71.7044M/s tokens_per_second=555.853k/s
BM_CommentLines/1/0/2 7473119 ns 7472370 ns 87 bytes_per_second=140.389M/s lines_per_second=26.765M/s tokens_per_second=13.3826M/s
BM_CommentLines/4/0/2 9702727 ns 9700268 ns 66 bytes_per_second=255.615M/s lines_per_second=51.5445M/s tokens_per_second=10.309M/s
BM_CommentLines/128/0/2 140504132 ns 140480254 ns 5 bytes_per_second=438.544M/s lines_per_second=91.8269M/s tokens_per_second=711.844k/s
BM_CommentLines/1/30/2 7530847 ns 7529227 ns 82 bytes_per_second=519.314M/s lines_per_second=26.5629M/s tokens_per_second=13.2816M/s
BM_CommentLines/4/30/2 11646677 ns 11644972 ns 56 bytes_per_second=1.16764G/s lines_per_second=42.9366M/s tokens_per_second=8.5874M/s
BM_CommentLines/128/30/2 161292392 ns 161273904 ns 4 bytes_per_second=2.59054G/s lines_per_second=79.9873M/s tokens_per_second=620.063k/s
BM_CommentLines/1/70/2 7700751 ns 7700365 ns 83 bytes_per_second=1003.16M/s lines_per_second=25.9725M/s tokens_per_second=12.9864M/s
BM_CommentLines/4/70/2 14133018 ns 14131523 ns 45 bytes_per_second=2.01664G/s lines_per_second=35.3815M/s tokens_per_second=7.07638M/s
BM_CommentLines/128/70/2 179085026 ns 179057072 ns 4 bytes_per_second=4.99628G/s lines_per_second=72.0433M/s tokens_per_second=558.481k/s
BM_CommentLines/1/0/8 7792060 ns 7791951 ns 83 bytes_per_second=208.065M/s lines_per_second=25.6673M/s tokens_per_second=12.8338M/s
BM_CommentLines/4/0/8 10329194 ns 10329006 ns 61 bytes_per_second=461.644M/s lines_per_second=48.4069M/s tokens_per_second=9.68147M/s
BM_CommentLines/128/0/8 140917902 ns 140917975 ns 5 bytes_per_second=956.927M/s lines_per_second=91.5417M/s tokens_per_second=709.633k/s
BM_CommentLines/1/30/8 7813308 ns 7811702 ns 82 bytes_per_second=573.784M/s lines_per_second=25.6024M/s tokens_per_second=12.8013M/s
BM_CommentLines/4/30/8 12052779 ns 12051440 ns 54 bytes_per_second=1.31373G/s lines_per_second=41.4884M/s tokens_per_second=8.29776M/s
BM_CommentLines/128/30/8 163767409 ns 163753783 ns 4 bytes_per_second=2.9881G/s lines_per_second=78.776M/s tokens_per_second=610.673k/s
BM_CommentLines/1/70/8 8188137 ns 8187614 ns 80 bytes_per_second=1013.35M/s lines_per_second=24.4269M/s tokens_per_second=12.2136M/s
BM_CommentLines/4/70/8 15723650 ns 15721559 ns 43 bytes_per_second=1.95485G/s lines_per_second=31.8031M/s tokens_per_second=6.36069M/s
BM_CommentLines/128/70/8 182579515 ns 182554119 ns 4 bytes_per_second=5.29237G/s lines_per_second=70.6633M/s tokens_per_second=547.783k/s
BM_SpeedOfLightStrCpy 27009 ns 27006 ns 25887 bytes_per_second=37.594G/s lines_per_second=1.17547G/s tokens_per_second=3.70286G/s
BM_SpeedOfLightDispatch<1> 1850860 ns 1850660 ns 381 bytes_per_second=561.764M/s lines_per_second=17.1533M/s tokens_per_second=54.0348M/s
BM_SpeedOfLightDispatch<2> 1876473 ns 1876369 ns 347 bytes_per_second=554.067M/s lines_per_second=16.9183M/s tokens_per_second=53.2944M/s
BM_SpeedOfLightDispatch<4> 2208441 ns 2208443 ns 314 bytes_per_second=470.755M/s lines_per_second=14.3744M/s tokens_per_second=45.2808M/s
BM_SpeedOfLightDispatch<8> 2824174 ns 2824137 ns 250 bytes_per_second=368.125M/s lines_per_second=11.2406M/s tokens_per_second=35.409M/s
BM_SpeedOfLightDispatch<16> 4306633 ns 4306325 ns 165 bytes_per_second=241.42M/s lines_per_second=7.37172M/s tokens_per_second=23.2217M/s
BM_SpeedOfLightDispatch<32> 6300653 ns 6300102 ns 113 bytes_per_second=165.019M/s lines_per_second=5.03881M/s tokens_per_second=15.8728M/s
BM_SpeedOfLightDispatch<MaxDispatchTargets> 8879663 ns 8878510 ns 79 bytes_per_second=117.096M/s lines_per_second=3.57549M/s tokens_per_second=11.2632M/s
```
After:
```
------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------------------
BM_ValidKeywords 2821833 ns 2821832 ns 247 bytes_per_second=211.642M/s tokens_per_second=35.438M/s
BM_ValidKeywordsAsRawIdentifiers 3204326 ns 3203964 ns 216 bytes_per_second=245.931M/s tokens_per_second=31.2113M/s
BM_RawIdentifierFocus 6076723 ns 6076107 ns 98 bytes_per_second=257.524M/s tokens_per_second=16.4579M/s
BM_ValidIdentifiers<1, 64, false> 6303093 ns 6302632 ns 101 bytes_per_second=233.682M/s tokens_per_second=15.8664M/s
BM_ValidIdentifiers<1, 1, true> 3687668 ns 3687338 ns 194 bytes_per_second=77.5902M/s tokens_per_second=27.1198M/s
BM_ValidIdentifiers<3, 5, true> 5298920 ns 5298465 ns 106 bytes_per_second=107.994M/s tokens_per_second=18.8734M/s
BM_ValidIdentifiers<3, 16, true> 4880695 ns 4879704 ns 118 bytes_per_second=224.75M/s tokens_per_second=20.493M/s
BM_ValidIdentifiers<12, 64, true> 5413070 ns 5411832 ns 103 bytes_per_second=704.84M/s tokens_per_second=18.478M/s
BM_ValidIdentifiers<16, 16, true> 5052780 ns 5051309 ns 110 bytes_per_second=339.835M/s tokens_per_second=19.7968M/s
BM_ValidIdentifiers<24, 24, true> 5221580 ns 5220851 ns 104 bytes_per_second=474.933M/s tokens_per_second=19.154M/s
BM_ValidIdentifiers<32, 32, true> 5786811 ns 5786806 ns 99 bytes_per_second=560.325M/s tokens_per_second=17.2807M/s
BM_ValidIdentifiers<48, 48, true> 5959506 ns 5959502 ns 96 bytes_per_second=800.129M/s tokens_per_second=16.7799M/s
BM_ValidIdentifiers<64, 64, true> 7831469 ns 7830629 ns 75 bytes_per_second=803.799M/s tokens_per_second=12.7704M/s
BM_ValidIdentifiers<80, 80, true> 7905843 ns 7904727 ns 75 bytes_per_second=989.298M/s tokens_per_second=12.6507M/s
BM_HorizontalWhitespace/1 5091171 ns 5090660 ns 109 bytes_per_second=112.402M/s tokens_per_second=19.6438M/s
BM_HorizontalWhitespace/4 5020344 ns 5020344 ns 112 bytes_per_second=170.965M/s tokens_per_second=19.919M/s
BM_HorizontalWhitespace/16 5846801 ns 5846459 ns 99 bytes_per_second=342.549M/s tokens_per_second=17.1044M/s
BM_HorizontalWhitespace/64 7803183 ns 7802357 ns 78 bytes_per_second=843.372M/s tokens_per_second=12.8166M/s
BM_HorizontalWhitespace/128 10600500 ns 10598602 ns 59 bytes_per_second=1.16869G/s tokens_per_second=9.43521M/s
BM_RandomSource 4824062 ns 4823496 ns 139 bytes_per_second=215.536M/s lines_per_second=6.58133M/s tokens_per_second=20.7319M/s
BM_GroupingSymbols/1/0/0 4116846 ns 4116549 ns 170 bytes_per_second=207.431M/s lines_per_second=18.2191M/s tokens_per_second=24.2922M/s
BM_GroupingSymbols/2/0/0 3024336 ns 3024156 ns 236 bytes_per_second=241.144M/s lines_per_second=27.5548M/s tokens_per_second=33.0671M/s
BM_GroupingSymbols/3/0/0 2789794 ns 2789256 ns 252 bytes_per_second=255.601M/s lines_per_second=31.3704M/s tokens_per_second=35.8519M/s
BM_GroupingSymbols/4/0/0 2496498 ns 2496237 ns 283 bytes_per_second=296.921M/s lines_per_second=36.0543M/s tokens_per_second=40.0603M/s
BM_GroupingSymbols/8/0/0 2200846 ns 2200611 ns 313 bytes_per_second=456.487M/s lines_per_second=42.9131M/s tokens_per_second=45.4419M/s
BM_GroupingSymbols/16/0/0 2415237 ns 2415015 ns 288 bytes_per_second=703.225M/s lines_per_second=40.1873M/s tokens_per_second=41.4076M/s
BM_GroupingSymbols/32/0/0 3171195 ns 3170504 ns 215 bytes_per_second=1004.97M/s lines_per_second=31.0597M/s tokens_per_second=31.5407M/s
BM_GroupingSymbols/0/1/0 3627393 ns 3626737 ns 193 bytes_per_second=209.15M/s lines_per_second=6.89325M/s tokens_per_second=27.573M/s
BM_GroupingSymbols/0/2/0 2501189 ns 2500946 ns 275 bytes_per_second=215.33M/s lines_per_second=6.66388M/s tokens_per_second=39.9849M/s
BM_GroupingSymbols/0/3/0 2149513 ns 2149282 ns 318 bytes_per_second=198.593M/s lines_per_second=5.8159M/s tokens_per_second=46.5272M/s
BM_GroupingSymbols/0/4/0 1793658 ns 1793292 ns 384 bytes_per_second=200.59M/s lines_per_second=5.57634M/s tokens_per_second=55.7634M/s
BM_GroupingSymbols/0/8/0 1302555 ns 1302272 ns 542 bytes_per_second=185.589M/s lines_per_second=4.26562M/s tokens_per_second=76.7889M/s
BM_GroupingSymbols/0/16/0 1042993 ns 1042818 ns 671 bytes_per_second=165.428M/s lines_per_second=2.82024M/s tokens_per_second=95.8941M/s
BM_GroupingSymbols/0/32/0 955561 ns 955471 ns 749 bytes_per_second=141.082M/s lines_per_second=1.58561M/s tokens_per_second=104.66M/s
BM_GroupingSymbols/0/0/1 3659797 ns 3659369 ns 194 bytes_per_second=207.285M/s lines_per_second=6.83178M/s tokens_per_second=27.3271M/s
BM_GroupingSymbols/0/0/2 2467556 ns 2467190 ns 281 bytes_per_second=218.276M/s lines_per_second=6.75505M/s tokens_per_second=40.5319M/s
BM_GroupingSymbols/0/0/3 2152274 ns 2151938 ns 326 bytes_per_second=198.348M/s lines_per_second=5.80872M/s tokens_per_second=46.4697M/s
BM_GroupingSymbols/0/0/4 1805982 ns 1805877 ns 368 bytes_per_second=199.192M/s lines_per_second=5.53747M/s tokens_per_second=55.3747M/s
BM_GroupingSymbols/0/0/8 1313041 ns 1312833 ns 539 bytes_per_second=184.096M/s lines_per_second=4.23131M/s tokens_per_second=76.1711M/s
BM_GroupingSymbols/0/0/16 1065565 ns 1065301 ns 659 bytes_per_second=161.937M/s lines_per_second=2.76072M/s tokens_per_second=93.8702M/s
BM_GroupingSymbols/0/0/32 946630 ns 946514 ns 726 bytes_per_second=142.417M/s lines_per_second=1.60061M/s tokens_per_second=105.651M/s
BM_GroupingSymbols/32/1/0 2991120 ns 2991121 ns 233 bytes_per_second=1034.6M/s lines_per_second=31.9445M/s tokens_per_second=33.4323M/s
BM_GroupingSymbols/32/2/0 2893280 ns 2892944 ns 245 bytes_per_second=1039.45M/s lines_per_second=32.085M/s tokens_per_second=34.5669M/s
BM_GroupingSymbols/32/3/0 2819177 ns 2819024 ns 239 bytes_per_second=1037.81M/s lines_per_second=32.004M/s tokens_per_second=35.4733M/s
BM_GroupingSymbols/32/4/0 2778376 ns 2778018 ns 249 bytes_per_second=1026.15M/s lines_per_second=31.6107M/s tokens_per_second=35.9969M/s
BM_GroupingSymbols/32/8/0 2538279 ns 2538279 ns 275 bytes_per_second=1016.65M/s lines_per_second=31.216M/s tokens_per_second=39.3968M/s
BM_GroupingSymbols/32/16/0 2291819 ns 2291693 ns 305 bytes_per_second=948.937M/s lines_per_second=28.9306M/s tokens_per_second=43.6359M/s
BM_GroupingSymbols/32/32/0 1943560 ns 1943560 ns 366 bytes_per_second=855.273M/s lines_per_second=25.7183M/s tokens_per_second=51.452M/s
BM_GroupingSymbols/32/32/1 1902069 ns 1901915 ns 375 bytes_per_second=861.158M/s lines_per_second=25.8713M/s tokens_per_second=52.5786M/s
BM_GroupingSymbols/32/32/2 1877847 ns 1877752 ns 379 bytes_per_second=860.371M/s lines_per_second=25.8234M/s tokens_per_second=53.2552M/s
BM_GroupingSymbols/32/32/3 1837280 ns 1837016 ns 381 bytes_per_second=867.308M/s lines_per_second=26.0069M/s tokens_per_second=54.4361M/s
BM_GroupingSymbols/32/32/4 1841010 ns 1840902 ns 380 bytes_per_second=853.349M/s lines_per_second=25.5636M/s tokens_per_second=54.3212M/s
BM_GroupingSymbols/32/32/8 1734676 ns 1734437 ns 405 bytes_per_second=859.062M/s lines_per_second=25.6337M/s tokens_per_second=57.6556M/s
BM_GroupingSymbols/32/32/16 1641169 ns 1640934 ns 422 bytes_per_second=824.63M/s lines_per_second=24.4403M/s tokens_per_second=60.9409M/s
BM_GroupingSymbols/32/32/32 1506988 ns 1506914 ns 472 bytes_per_second=759.418M/s lines_per_second=22.2143M/s tokens_per_second=66.3608M/s
BM_BlankLines/1 5658057 ns 5657150 ns 110 bytes_per_second=101.147M/s lines_per_second=17.6766M/s tokens_per_second=17.6767M/s
BM_BlankLines/4 8346196 ns 8346052 ns 77 bytes_per_second=102.839M/s lines_per_second=47.9264M/s tokens_per_second=11.9817M/s
BM_BlankLines/16 31147085 ns 31144610 ns 22 bytes_per_second=64.3033M/s lines_per_second=51.3727M/s tokens_per_second=3.21083M/s
BM_BlankLines/64 83743719 ns 83743762 ns 8 bytes_per_second=78.5765M/s lines_per_second=76.4228M/s tokens_per_second=1.19412M/s
BM_BlankLines/128 152299627 ns 152274606 ns 4 bytes_per_second=83.2952M/s lines_per_second=84.0578M/s tokens_per_second=656.708k/s
BM_CommentLines/1/0/0 7535704 ns 7535149 ns 83 bytes_per_second=113.906M/s lines_per_second=26.542M/s tokens_per_second=13.2711M/s
BM_CommentLines/4/0/0 10107724 ns 10106088 ns 66 bytes_per_second=169.858M/s lines_per_second=49.4746M/s tokens_per_second=9.89503M/s
BM_CommentLines/128/0/0 130061022 ns 130029826 ns 5 bytes_per_second=286.034M/s lines_per_second=99.207M/s tokens_per_second=769.054k/s
BM_CommentLines/1/30/0 7773816 ns 7772726 ns 83 bytes_per_second=478.506M/s lines_per_second=25.7307M/s tokens_per_second=12.8655M/s
BM_CommentLines/4/30/0 11436116 ns 11434452 ns 56 bytes_per_second=1.12398G/s lines_per_second=43.7271M/s tokens_per_second=8.7455M/s
BM_CommentLines/128/30/0 155047059 ns 155033899 ns 4 bytes_per_second=2.54103G/s lines_per_second=83.2068M/s tokens_per_second=645.02k/s
BM_CommentLines/1/70/0 8016209 ns 8014861 ns 75 bytes_per_second=939.998M/s lines_per_second=24.9534M/s tokens_per_second=12.4768M/s
BM_CommentLines/4/70/0 14894752 ns 14891800 ns 44 bytes_per_second=1.86365G/s lines_per_second=33.5752M/s tokens_per_second=6.7151M/s
BM_CommentLines/128/70/0 176667108 ns 176631061 ns 4 bytes_per_second=4.92993G/s lines_per_second=73.0329M/s tokens_per_second=566.152k/s
BM_CommentLines/1/0/2 7764475 ns 7763675 ns 84 bytes_per_second=135.121M/s lines_per_second=25.7607M/s tokens_per_second=12.8805M/s
BM_CommentLines/4/0/2 10238104 ns 10236809 ns 65 bytes_per_second=242.217M/s lines_per_second=48.8429M/s tokens_per_second=9.76867M/s
BM_CommentLines/128/0/2 130208823 ns 130190640 ns 5 bytes_per_second=473.204M/s lines_per_second=99.0845M/s tokens_per_second=768.104k/s
BM_CommentLines/1/30/2 7941224 ns 7940584 ns 78 bytes_per_second=492.411M/s lines_per_second=25.1868M/s tokens_per_second=12.5935M/s
BM_CommentLines/4/30/2 11936879 ns 11934453 ns 56 bytes_per_second=1.13932G/s lines_per_second=41.8951M/s tokens_per_second=8.3791M/s
BM_CommentLines/128/30/2 156978531 ns 156967142 ns 4 bytes_per_second=2.66162G/s lines_per_second=82.182M/s tokens_per_second=637.076k/s
BM_CommentLines/1/70/2 8223614 ns 8222923 ns 79 bytes_per_second=939.409M/s lines_per_second=24.322M/s tokens_per_second=12.1611M/s
BM_CommentLines/4/70/2 15216239 ns 15215047 ns 45 bytes_per_second=1.87303G/s lines_per_second=32.8619M/s tokens_per_second=6.57244M/s
BM_CommentLines/128/70/2 176810589 ns 176755958 ns 4 bytes_per_second=5.06133G/s lines_per_second=72.9813M/s tokens_per_second=565.752k/s
BM_CommentLines/1/0/8 7901146 ns 7899003 ns 82 bytes_per_second=205.245M/s lines_per_second=25.3194M/s tokens_per_second=12.6598M/s
BM_CommentLines/4/0/8 10135919 ns 10134576 ns 66 bytes_per_second=470.501M/s lines_per_second=49.3356M/s tokens_per_second=9.86721M/s
BM_CommentLines/128/0/8 132206448 ns 132206347 ns 5 bytes_per_second=1019.98M/s lines_per_second=97.5738M/s tokens_per_second=756.393k/s
BM_CommentLines/1/30/8 7981189 ns 7981202 ns 79 bytes_per_second=561.598M/s lines_per_second=25.0586M/s tokens_per_second=12.5294M/s
BM_CommentLines/4/30/8 12311389 ns 12309078 ns 54 bytes_per_second=1.28623G/s lines_per_second=40.62M/s tokens_per_second=8.12409M/s
BM_CommentLines/128/30/8 160432032 ns 160393999 ns 4 bytes_per_second=3.05069G/s lines_per_second=80.4261M/s tokens_per_second=623.465k/s
BM_CommentLines/1/70/8 8199080 ns 8199078 ns 79 bytes_per_second=1011.93M/s lines_per_second=24.3927M/s tokens_per_second=12.1965M/s
BM_CommentLines/4/70/8 16087954 ns 16086159 ns 44 bytes_per_second=1.91055G/s lines_per_second=31.0823M/s tokens_per_second=6.21652M/s
BM_CommentLines/128/70/8 175714908 ns 175675241 ns 4 bytes_per_second=5.4996G/s lines_per_second=73.4302M/s tokens_per_second=569.232k/s
BM_SpeedOfLightStrCpy 28860 ns 28858 ns 26092 bytes_per_second=35.181G/s lines_per_second=1.10002G/s tokens_per_second=3.46519G/s
BM_SpeedOfLightDispatch<1> 1823558 ns 1823473 ns 385 bytes_per_second=570.14M/s lines_per_second=17.4091M/s tokens_per_second=54.8404M/s
BM_SpeedOfLightDispatch<2> 2013453 ns 2013250 ns 343 bytes_per_second=516.396M/s lines_per_second=15.768M/s tokens_per_second=49.6709M/s
BM_SpeedOfLightDispatch<4> 2225145 ns 2224920 ns 312 bytes_per_second=467.268M/s lines_per_second=14.2679M/s tokens_per_second=44.9454M/s
BM_SpeedOfLightDispatch<8> 2851730 ns 2851590 ns 251 bytes_per_second=364.581M/s lines_per_second=11.1324M/s tokens_per_second=35.0682M/s
BM_SpeedOfLightDispatch<16> 4431584 ns 4431156 ns 161 bytes_per_second=234.619M/s lines_per_second=7.16404M/s tokens_per_second=22.5675M/s
BM_SpeedOfLightDispatch<32> 6229285 ns 6228092 ns 111 bytes_per_second=166.927M/s lines_per_second=5.09707M/s tokens_per_second=16.0563M/s
BM_SpeedOfLightDispatch<MaxDispatchTargets> 8967228 ns 8965583 ns 79 bytes_per_second=115.958M/s lines_per_second=3.54076M/s tokens_per_second=11.1538M/s
```
---------
Co-authored-by: Chandler Carruth <chandlerc@gmail.com >
2023-11-10 23:59:49 +00:00
josh11b
11d79a3882
Use x-macro instead of TYPED_TEST for compilation speed ( #3388 )
...
Reduces total time to build and run just this test from 25+ seconds to
~16 seconds.
2023-11-10 23:34:13 +00:00