-
-
Notifications
You must be signed in to change notification settings - Fork 5
Benchmarks
This page will show the results of benchmarks that were written to test the performance of CatCore, and serves as a comparison with the old ChatCore implementation as well. The initial resultsets will be a subset of the ones that apply to Beat Saber (scoped to the specific version of the Unity Mono runtime).
However, I'll also be providing the full benchmark run results below though, those results consists of runs against runtimes listed below:
- .NET 5
- .NET 6
- .NET Framework 4.7.2
- Mono Unity 2019.4.28f1
- Mono Unity 2021.2.0b4
- Mono Unity 2022.1.0a12
Before getting to the actual benchmarks and results, it's probably a good idea to have a little bit of understanding on how to interprete the results. So hereby a small legend on what each and every column means.
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
StdErr : Standard error of all measurements
Min : Minimum
Q1 : Quartile 1 (25th percentile)
Median : Value separating the higher half of all measurements (50th percentile)
Q3 : Quartile 3 (75th percentile)
Max : Maximum
Op/s : Operation per second
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
RatioSD : Standard deviation of the ratio distribution ([Current]/[Baseline])
Gen 0 : GC Generation 0 collects per 1000 operations
Gen 1 : GC Generation 1 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ns : 1 Nanosecond (0.000000001 sec)
This is, however, a lot of information and might be a bit overwhelming, so in short, you mainly want to focus on the following columns.
-
Method: This is a pretty important column as it shows the actual name of the implementation to which the results next to it belong. -
meananderror: The mean column indicates how much (or little) time was spend executing the implementation a single time on average, while the error column indicates the margin of error. You would want these numbers to be as LOW as possible. -
Op/s: This column indicates how many times said implementation could be executed in the timespan of a second. You want to these numbers to be as HIGH as possible.
Those should give you a pretty good idea on how to interprete the results, applicable to Beat Saber at least.
However, the raw resultsets below contain a few more columns that might be of interest.
-
Runtime: This one indicates the runtime and version in which the implementations were being ran. -
Gen 0,Gen 1,Allocated: Those columns indicate how much garbage is being generated during the runs of the methods. You want those to be as LOW as possible, as a garbage collection trigger is often the cause of a lagspike.
The main part of the optimizations were focused on the chat handling part of CatCore. Given that the old implementation was relying on a bunch of Regular Expressions (also known as "Regex"), which are... incredibly slow, especially in Mono Unity, as well not exactly fool-proof I decided to replace all of them with tailor-made logic.
The first 3 sets of benchmarks will be regarding the actual deconstruction of an incoming chat message, while the fourth impacts the performance of detecting emotes in a chat message.
Okay so, "High-level IRC (chat) message deconstruction"... it's a mouthful, but you might be wondering what it exactly encompasses? Well, glad you asked. Every incoming IRC (chat) message consists of up-to 5 different main parts.
(this part is a work-in-progress so sorry for the cliffhanger π )
This benchmark is related to the code that does the detection of Unicode emojis in chat messages. For example, in the chat message "I β€οΈ playing games!", it will detect the heart emoji as well, as on which position it occurred in the chat message. This will allow programs/mods to properly visualize the actual emoji instead of just showing the text representation.
βΉοΈ Additional information
It's also important to note that performance wasn't the only thing that was heavily improved in this area. The other key points that were also addressed, is it's maintainability (updating for newer unicode emoji versions is as simple as updating a reference file now), as well as its correctness in detecting emotes, as can be seen on the screenshot below. (It's also good to know that the the new implementation was updated in the meantime to support Unicode 14.0 emojis, while the old implementation is still lagging behind, tests below were tested against the Unicode 13.1 Emoji references)
This benchmark consists of 3 possible implementations that could be used to parse emojis.
-
FrwTwemojiBaselineBenchmark
This implementation is the original one from ChatCore, based on the FrwTwemoji repository -
FrwTwemojiAdjustedBenchmark
This implementation is, as the name implies an adjusted version of the baseline one above. It's basically the same idea with just a few minor differences. -
CatCoreTwemojiReimplementationBenchmark
This is the method that's currently in use in CatCore, and is based on an entirely different approach. More details about the actual implementation can be found in the CatCore.Emoji GitHub repository.
Furthermore, those 3 implementations got performance tested against 3 different input values to ensure that their performance wasn't solely based on a single (possibly flawed) approach.
- I π§‘ Twemoji! π₯³
- I've eaten Chinese food π±ππ±π£π₯πππππ±π£π₯ππππ
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
The benchmark results are reproducible by executing the following benchmark: EmojiParserBenchmark.cs
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19044.1645 (21H2)
AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
- [Host] : .NET Framework 4.8 (4.8.4470.0), X64 RyuJIT
- Job-XTWDPN : Mono 5.11.0 (Visual Studio), X86
| Method | Job | Runtime | Message | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | Baseline | Gen 0 | Gen 1 | Allocated |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 624.2 ns | 3.95 ns | 3.30 ns | 0.91 ns | 619.3 ns | 622.5 ns | 623.9 ns | 625.8 ns | 631.2 ns | 1,601,943.0 | 0.06 | No | 0.1049 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 9,924.5 ns | 16.82 ns | 14.04 ns | 3.90 ns | 9,903.4 ns | 9,916.5 ns | 9,921.0 ns | 9,928.5 ns | 9,951.5 ns | 100,761.0 | 0.93 | No | 0.3357 | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 10,663.5 ns | 57.06 ns | 53.37 ns | 13.78 ns | 10,602.8 ns | 10,622.4 ns | 10,629.1 ns | 10,701.1 ns | 10,766.3 ns | 93,777.9 | 1.00 | Yes | 0.4120 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 3,886.9 ns | 17.78 ns | 14.85 ns | 4.12 ns | 3,858.7 ns | 3,883.2 ns | 3,890.1 ns | 3,896.2 ns | 3,908.4 ns | 257,274.1 | 0.04 | No | 0.7782 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 80,814.0 ns | 266.87 ns | 236.58 ns | 63.23 ns | 80,355.9 ns | 80,647.9 ns | 80,885.8 ns | 80,967.0 ns | 81,269.2 ns | 12,374.1 | 0.93 | No | 2.4414 | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 86,738.8 ns | 408.37 ns | 381.99 ns | 98.63 ns | 86,151.5 ns | 86,474.0 ns | 86,769.1 ns | 87,042.4 ns | 87,404.2 ns | 11,528.9 | 1.00 | Yes | 3.0518 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 9,937.6 ns | 32.57 ns | 30.47 ns | 7.87 ns | 9,898.6 ns | 9,914.9 ns | 9,921.5 ns | 9,961.7 ns | 9,987.0 ns | 100,627.5 | 0.23 | No | - | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 42,752.9 ns | 97.89 ns | 91.57 ns | 23.64 ns | 42,607.8 ns | 42,661.5 ns | 42,788.4 ns | 42,809.0 ns | 42,899.9 ns | 23,390.2 | 1.00 | Yes | - | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 42,842.8 ns | 123.34 ns | 115.37 ns | 29.79 ns | 42,714.7 ns | 42,743.4 ns | 42,829.9 ns | 42,894.9 ns | 43,047.7 ns | 23,341.2 | 1.00 | No | - | - | - |
Clarification on this can be found here.
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19044.1645 (21H2)
AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
- [Host] : .NET Framework 4.8 (4.8.4470.0), X64 RyuJIT
- Job-CIRMVA : .NET 5.0.16 (5.0.1622.16705), X64 RyuJIT
- Job-NVAYXH : .NET 6.0.4 (6.0.422.16404), X64 RyuJIT
- Job-ZSFKTD : .NET Framework 4.8 (4.8.4470.0), X64 RyuJIT
- Job-XTWDPN : Mono 5.11.0 (Visual Studio), X86
- Job-UGEEKR : Mono 6.13.0 (Visual Studio), X86
- Job-LJOXDK : Mono 6.13.0 (Visual Studio), X86
| Method | Job | Runtime | Message | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | Baseline | Gen 0 | Gen 1 | Allocated |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CatCoreTwemojiReimplementationBenchmark | Job-CIRMVA | .NET 5.0 | I π§‘ Twemoji! π₯³ | 294.0 ns | 2.12 ns | 1.98 ns | 0.51 ns | 291.1 ns | 292.1 ns | 294.4 ns | 295.2 ns | 297.3 ns | 3,401,719.5 | 0.13 | No | 0.0658 | - | 552 B |
| FrwTwemojiAdjustedBenchmark | Job-CIRMVA | .NET 5.0 | I π§‘ Twemoji! π₯³ | 1,981.4 ns | 19.10 ns | 17.87 ns | 4.61 ns | 1,957.2 ns | 1,971.6 ns | 1,979.3 ns | 1,989.5 ns | 2,015.8 ns | 504,706.1 | 0.89 | No | 0.2193 | 0.0019 | 1,848 B |
| FrwTwemojiBaselineBenchmark | Job-CIRMVA | .NET 5.0 | I π§‘ Twemoji! π₯³ | 2,220.5 ns | 13.70 ns | 12.82 ns | 3.31 ns | 2,200.2 ns | 2,210.2 ns | 2,216.5 ns | 2,232.3 ns | 2,246.0 ns | 450,348.2 | 1.00 | Yes | 0.2327 | - | 1,960 B |
| CatCoreTwemojiReimplementationBenchmark | Job-NVAYXH | .NET 6.0 | I π§‘ Twemoji! π₯³ | 297.8 ns | 1.62 ns | 1.44 ns | 0.38 ns | 294.6 ns | 297.1 ns | 297.8 ns | 298.3 ns | 300.2 ns | 3,357,554.5 | 0.15 | No | 0.0658 | - | 552 B |
| FrwTwemojiAdjustedBenchmark | Job-NVAYXH | .NET 6.0 | I π§‘ Twemoji! π₯³ | 1,851.6 ns | 6.29 ns | 5.88 ns | 1.52 ns | 1,842.4 ns | 1,847.1 ns | 1,849.5 ns | 1,856.3 ns | 1,862.3 ns | 540,085.2 | 0.91 | No | 0.2193 | - | 1,848 B |
| FrwTwemojiBaselineBenchmark | Job-NVAYXH | .NET 6.0 | I π§‘ Twemoji! π₯³ | 2,045.6 ns | 11.16 ns | 9.89 ns | 2.64 ns | 2,022.8 ns | 2,041.9 ns | 2,044.8 ns | 2,049.8 ns | 2,063.3 ns | 488,856.3 | 1.00 | Yes | 0.2327 | 0.0019 | 1,960 B |
| CatCoreTwemojiReimplementationBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I π§‘ Twemoji! π₯³ | 323.6 ns | 0.81 ns | 0.72 ns | 0.19 ns | 322.3 ns | 323.3 ns | 323.6 ns | 324.1 ns | 324.7 ns | 3,090,164.0 | 0.07 | No | 0.0887 | - | 562 B |
| FrwTwemojiAdjustedBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I π§‘ Twemoji! π₯³ | 3,874.8 ns | 20.45 ns | 17.07 ns | 4.74 ns | 3,851.9 ns | 3,859.4 ns | 3,876.3 ns | 3,887.6 ns | 3,900.9 ns | 258,081.1 | 0.89 | No | 0.3052 | - | 1,934 B |
| FrwTwemojiBaselineBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I π§‘ Twemoji! π₯³ | 4,360.7 ns | 26.21 ns | 23.23 ns | 6.21 ns | 4,337.3 ns | 4,341.6 ns | 4,355.4 ns | 4,373.8 ns | 4,413.7 ns | 229,319.4 | 1.00 | Yes | 0.3738 | - | 2,415 B |
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 624.2 ns | 3.95 ns | 3.30 ns | 0.91 ns | 619.3 ns | 622.5 ns | 623.9 ns | 625.8 ns | 631.2 ns | 1,601,943.0 | 0.06 | No | 0.1049 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 9,924.5 ns | 16.82 ns | 14.04 ns | 3.90 ns | 9,903.4 ns | 9,916.5 ns | 9,921.0 ns | 9,928.5 ns | 9,951.5 ns | 100,761.0 | 0.93 | No | 0.3357 | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I π§‘ Twemoji! π₯³ | 10,663.5 ns | 57.06 ns | 53.37 ns | 13.78 ns | 10,602.8 ns | 10,622.4 ns | 10,629.1 ns | 10,701.1 ns | 10,766.3 ns | 93,777.9 | 1.00 | Yes | 0.4120 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I π§‘ Twemoji! π₯³ | 522.9 ns | 3.39 ns | 3.01 ns | 0.80 ns | 517.8 ns | 521.3 ns | 522.5 ns | 524.2 ns | 528.6 ns | 1,912,566.3 | 0.05 | No | 0.1049 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I π§‘ Twemoji! π₯³ | 10,112.4 ns | 22.78 ns | 19.02 ns | 5.28 ns | 10,080.7 ns | 10,102.9 ns | 10,115.1 ns | 10,122.6 ns | 10,148.2 ns | 98,888.3 | 0.96 | No | 0.3357 | - | - |
| FrwTwemojiBaselineBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I π§‘ Twemoji! π₯³ | 10,533.9 ns | 23.61 ns | 22.08 ns | 5.70 ns | 10,502.1 ns | 10,513.7 ns | 10,539.6 ns | 10,551.7 ns | 10,564.9 ns | 94,931.9 | 1.00 | Yes | 0.3662 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I π§‘ Twemoji! π₯³ | 521.0 ns | 1.60 ns | 1.50 ns | 0.39 ns | 518.7 ns | 520.1 ns | 521.4 ns | 522.3 ns | 523.4 ns | 1,919,268.2 | 0.05 | No | 0.1049 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I π§‘ Twemoji! π₯³ | 10,191.3 ns | 21.50 ns | 19.06 ns | 5.09 ns | 10,157.3 ns | 10,178.6 ns | 10,191.1 ns | 10,202.5 ns | 10,227.4 ns | 98,123.1 | 0.96 | No | 0.3357 | - | - |
| FrwTwemojiBaselineBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I π§‘ Twemoji! π₯³ | 10,582.1 ns | 69.83 ns | 65.32 ns | 16.87 ns | 10,483.7 ns | 10,536.9 ns | 10,563.8 ns | 10,617.9 ns | 10,709.9 ns | 94,499.3 | 1.00 | Yes | 0.3662 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-CIRMVA | .NET 5.0 | I've (...)ππ [56] | 1,596.0 ns | 4.54 ns | 4.24 ns | 1.10 ns | 1,585.8 ns | 1,593.8 ns | 1,596.7 ns | 1,598.8 ns | 1,602.1 ns | 626,569.3 | 0.09 | No | 0.4826 | 0.0134 | 4,040 B |
| FrwTwemojiAdjustedBenchmark | Job-CIRMVA | .NET 5.0 | I've (...)ππ [56] | 15,326.5 ns | 57.04 ns | 53.36 ns | 13.78 ns | 15,241.2 ns | 15,292.1 ns | 15,314.0 ns | 15,357.5 ns | 15,434.6 ns | 65,246.3 | 0.88 | No | 1.6022 | 0.0916 | 13,416 B |
| FrwTwemojiBaselineBenchmark | Job-CIRMVA | .NET 5.0 | I've (...)ππ [56] | 17,368.4 ns | 162.87 ns | 152.35 ns | 39.34 ns | 17,158.7 ns | 17,264.0 ns | 17,304.0 ns | 17,464.1 ns | 17,676.5 ns | 57,575.9 | 1.00 | Yes | 1.7090 | 0.0916 | 14,312 B |
| CatCoreTwemojiReimplementationBenchmark | Job-NVAYXH | .NET 6.0 | I've (...)ππ [56] | 1,637.9 ns | 4.78 ns | 3.99 ns | 1.11 ns | 1,630.7 ns | 1,636.2 ns | 1,637.5 ns | 1,639.8 ns | 1,646.0 ns | 610,530.7 | 0.10 | No | 0.4826 | 0.0134 | 4,040 B |
| FrwTwemojiAdjustedBenchmark | Job-NVAYXH | .NET 6.0 | I've (...)ππ [56] | 14,441.9 ns | 50.19 ns | 44.50 ns | 11.89 ns | 14,382.6 ns | 14,404.3 ns | 14,435.3 ns | 14,485.1 ns | 14,511.3 ns | 69,243.0 | 0.90 | No | 1.6022 | 0.0763 | 13,416 B |
| FrwTwemojiBaselineBenchmark | Job-NVAYXH | .NET 6.0 | I've (...)ππ [56] | 16,080.2 ns | 53.03 ns | 44.28 ns | 12.28 ns | 16,015.5 ns | 16,045.6 ns | 16,079.3 ns | 16,115.4 ns | 16,148.8 ns | 62,188.3 | 1.00 | Yes | 1.7090 | 0.0916 | 14,312 B |
| CatCoreTwemojiReimplementationBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I've (...)ππ [56] | 1,772.6 ns | 7.80 ns | 6.92 ns | 1.85 ns | 1,760.0 ns | 1,768.4 ns | 1,771.5 ns | 1,775.3 ns | 1,788.9 ns | 564,138.3 | 0.05 | No | 0.6428 | 0.0153 | 4,060 B |
| FrwTwemojiAdjustedBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I've (...)ππ [56] | 29,607.0 ns | 184.99 ns | 163.99 ns | 43.83 ns | 29,396.0 ns | 29,498.4 ns | 29,554.7 ns | 29,729.2 ns | 29,916.4 ns | 33,775.8 | 0.87 | No | 2.1667 | 0.0916 | 13,873 B |
| FrwTwemojiBaselineBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | I've (...)ππ [56] | 33,960.9 ns | 185.15 ns | 164.13 ns | 43.87 ns | 33,648.3 ns | 33,853.6 ns | 33,977.1 ns | 34,029.7 ns | 34,293.1 ns | 29,445.7 | 1.00 | Yes | 2.7466 | 0.1221 | 17,724 B |
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 3,886.9 ns | 17.78 ns | 14.85 ns | 4.12 ns | 3,858.7 ns | 3,883.2 ns | 3,890.1 ns | 3,896.2 ns | 3,908.4 ns | 257,274.1 | 0.04 | No | 0.7782 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 80,814.0 ns | 266.87 ns | 236.58 ns | 63.23 ns | 80,355.9 ns | 80,647.9 ns | 80,885.8 ns | 80,967.0 ns | 81,269.2 ns | 12,374.1 | 0.93 | No | 2.4414 | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | I've (...)ππ [56] | 86,738.8 ns | 408.37 ns | 381.99 ns | 98.63 ns | 86,151.5 ns | 86,474.0 ns | 86,769.1 ns | 87,042.4 ns | 87,404.2 ns | 11,528.9 | 1.00 | Yes | 3.0518 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I've (...)ππ [56] | 3,159.0 ns | 5.67 ns | 5.30 ns | 1.37 ns | 3,147.9 ns | 3,156.1 ns | 3,159.5 ns | 3,162.0 ns | 3,170.7 ns | 316,556.1 | 0.04 | No | 0.7820 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I've (...)ππ [56] | 82,950.7 ns | 346.85 ns | 307.47 ns | 82.17 ns | 82,574.9 ns | 82,732.2 ns | 82,884.1 ns | 83,173.2 ns | 83,640.6 ns | 12,055.4 | 0.97 | No | 2.4414 | - | - |
| FrwTwemojiBaselineBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | I've (...)ππ [56] | 85,485.1 ns | 194.25 ns | 172.20 ns | 46.02 ns | 85,207.4 ns | 85,380.4 ns | 85,430.9 ns | 85,622.2 ns | 85,759.7 ns | 11,697.9 | 1.00 | Yes | 2.5635 | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I've (...)ππ [56] | 3,161.4 ns | 11.75 ns | 9.81 ns | 2.72 ns | 3,145.8 ns | 3,156.4 ns | 3,159.4 ns | 3,162.7 ns | 3,183.0 ns | 316,314.3 | 0.04 | No | 0.7820 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I've (...)ππ [56] | 83,066.5 ns | 265.36 ns | 248.22 ns | 64.09 ns | 82,642.1 ns | 82,904.2 ns | 83,083.8 ns | 83,289.4 ns | 83,431.3 ns | 12,038.5 | 0.97 | No | 2.4414 | - | - |
| FrwTwemojiBaselineBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | I've (...)ππ [56] | 85,489.2 ns | 431.14 ns | 360.02 ns | 99.85 ns | 84,971.8 ns | 85,247.1 ns | 85,470.9 ns | 85,852.7 ns | 86,159.2 ns | 11,697.4 | 1.00 | Yes | 2.5635 | - | - |
| FrwTwemojiAdjustedBenchmark | Job-CIRMVA | .NET 5.0 | Lore(...)sum. [574] | 4,237.0 ns | 12.83 ns | 12.00 ns | 3.10 ns | 4,224.3 ns | 4,227.4 ns | 4,232.2 ns | 4,249.8 ns | 4,256.8 ns | 236,018.3 | 1.00 | No | 0.0153 | - | 152 B |
| FrwTwemojiBaselineBenchmark | Job-CIRMVA | .NET 5.0 | Lore(...)sum. [574] | 4,240.2 ns | 16.90 ns | 15.81 ns | 4.08 ns | 4,216.9 ns | 4,227.4 ns | 4,236.5 ns | 4,252.2 ns | 4,270.7 ns | 235,836.5 | 1.00 | Yes | 0.0153 | - | 152 B |
| CatCoreTwemojiReimplementationBenchmark | Job-CIRMVA | .NET 5.0 | Lore(...)sum. [574] | 6,132.2 ns | 28.89 ns | 27.03 ns | 6.98 ns | 6,092.3 ns | 6,109.1 ns | 6,140.6 ns | 6,156.0 ns | 6,168.5 ns | 163,074.3 | 1.45 | No | - | - | 32 B |
| FrwTwemojiBaselineBenchmark | Job-NVAYXH | .NET 6.0 | Lore(...)sum. [574] | 4,327.8 ns | 6.50 ns | 5.43 ns | 1.51 ns | 4,321.8 ns | 4,324.7 ns | 4,326.2 ns | 4,328.6 ns | 4,340.4 ns | 231,066.8 | 1.00 | Yes | 0.0153 | - | 152 B |
| FrwTwemojiAdjustedBenchmark | Job-NVAYXH | .NET 6.0 | Lore(...)sum. [574] | 4,336.9 ns | 19.15 ns | 15.99 ns | 4.44 ns | 4,320.2 ns | 4,325.4 ns | 4,327.2 ns | 4,346.0 ns | 4,366.0 ns | 230,581.5 | 1.00 | No | 0.0153 | - | 152 B |
| CatCoreTwemojiReimplementationBenchmark | Job-NVAYXH | .NET 6.0 | Lore(...)sum. [574] | 5,481.0 ns | 17.89 ns | 16.73 ns | 4.32 ns | 5,451.7 ns | 5,469.6 ns | 5,484.5 ns | 5,491.4 ns | 5,504.2 ns | 182,449.8 | 1.27 | No | - | - | 32 B |
| CatCoreTwemojiReimplementationBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | Lore(...)sum. [574] | 7,455.3 ns | 44.34 ns | 41.48 ns | 10.71 ns | 7,388.0 ns | 7,426.9 ns | 7,455.8 ns | 7,478.3 ns | 7,532.0 ns | 134,133.6 | 0.44 | No | - | - | 40 B |
| FrwTwemojiBaselineBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | Lore(...)sum. [574] | 17,084.6 ns | 121.57 ns | 113.72 ns | 29.36 ns | 16,916.0 ns | 17,007.7 ns | 17,073.2 ns | 17,143.7 ns | 17,310.6 ns | 58,532.3 | 1.00 | Yes | - | - | 185 B |
| FrwTwemojiAdjustedBenchmark | Job-ZSFKTD | .NET Framework 4.7.2 | Lore(...)sum. [574] | 17,174.3 ns | 147.16 ns | 130.45 ns | 34.86 ns | 16,994.9 ns | 17,076.8 ns | 17,153.3 ns | 17,210.3 ns | 17,443.6 ns | 58,226.7 | 1.01 | No | - | - | 185 B |
| CatCoreTwemojiReimplementationBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 9,937.6 ns | 32.57 ns | 30.47 ns | 7.87 ns | 9,898.6 ns | 9,914.9 ns | 9,921.5 ns | 9,961.7 ns | 9,987.0 ns | 100,627.5 | 0.23 | No | - | - | - |
| FrwTwemojiBaselineBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 42,752.9 ns | 97.89 ns | 91.57 ns | 23.64 ns | 42,607.8 ns | 42,661.5 ns | 42,788.4 ns | 42,809.0 ns | 42,899.9 ns | 23,390.2 | 1.00 | Yes | - | - | - |
| FrwTwemojiAdjustedBenchmark | Job-XTWDPN | Mono Unity 2019.4.28f1 | Lore(...)sum. [574] | 42,842.8 ns | 123.34 ns | 115.37 ns | 29.79 ns | 42,714.7 ns | 42,743.4 ns | 42,829.9 ns | 42,894.9 ns | 43,047.7 ns | 23,341.2 | 1.00 | No | - | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | Lore(...)sum. [574] | 9,367.4 ns | 24.10 ns | 22.54 ns | 5.82 ns | 9,328.1 ns | 9,350.7 ns | 9,367.5 ns | 9,381.9 ns | 9,410.3 ns | 106,752.7 | 0.20 | No | - | - | - |
| FrwTwemojiAdjustedBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | Lore(...)sum. [574] | 46,129.3 ns | 132.19 ns | 117.18 ns | 31.32 ns | 45,980.1 ns | 46,018.8 ns | 46,143.7 ns | 46,183.9 ns | 46,373.3 ns | 21,678.2 | 1.00 | No | - | - | - |
| FrwTwemojiBaselineBenchmark | Job-UGEEKR | Mono Unity 2021.2.0b4 | Lore(...)sum. [574] | 46,193.9 ns | 79.22 ns | 74.10 ns | 19.13 ns | 46,064.0 ns | 46,159.0 ns | 46,187.3 ns | 46,244.5 ns | 46,335.6 ns | 21,647.9 | 1.00 | Yes | - | - | - |
| CatCoreTwemojiReimplementationBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | Lore(...)sum. [574] | 9,399.0 ns | 26.19 ns | 21.87 ns | 6.07 ns | 9,369.0 ns | 9,382.5 ns | 9,399.3 ns | 9,405.3 ns | 9,442.0 ns | 106,393.9 | 0.20 | No | - | - | - |
| FrwTwemojiAdjustedBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | Lore(...)sum. [574] | 46,148.2 ns | 113.44 ns | 100.56 ns | 26.88 ns | 46,033.1 ns | 46,081.9 ns | 46,118.0 ns | 46,201.9 ns | 46,345.5 ns | 21,669.3 | 1.00 | No | - | - | - |
| FrwTwemojiBaselineBenchmark | Job-LJOXDK | Mono Unity 2022.1.0a12 | Lore(...)sum. [574] | 46,209.8 ns | 181.44 ns | 169.72 ns | 43.82 ns | 45,954.2 ns | 46,082.9 ns | 46,175.9 ns | 46,356.5 ns | 46,542.4 ns | 21,640.5 | 1.00 | Yes | - | - | - |
