Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added benchmarks project and set up some initial benchmarks.
Get cached items page
I benchmarked deserialization while using source generators separately and after noticing no substantial improvement got curious what causes requests that are cached to load not so optimally. I suspected it could be due to
JsonSerializerOptions
getting recomputed for each request. Benchmarked it and it seems about right. Deserialization-only (for the same items page) looks relatively fast.To benchmark getting cached page with static
JsonSerializerOptions
I created a new instance inside ofWebApiRequest
. Usednew Connection()
andnull
Gw2Client
as parameters for the constructor.SnakeCaseNamingPolicy.ConvertName benchmark results
In the process had to expose
SnakeCaseNamingPolicy
. Because of that optimized it a bit (not that it matters a lot) and covered some more valid C# property names. Created some tests for it.Conventional property name used:
"HypotheticalPropertyNameWithUnrealisticlyManyWords"
Unconventional property name used:
"HyPOThETicAl_PRopeRtYnAmE_wiThUNReAlisTicLyMaNy_wOrDs"