Closed andrewlock closed 4 days ago
Branch report: andrew/config-refactor/2-extra-converters
Commit report: 811d98d
Test service: dd-trace-dotnet
:white_check_mark: 0 Failed, 343490 Passed, 1661 Skipped, 13h 51m 0.22s Total Time
Execution-time results for samples comparing the following branches/commits:
Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.
Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).
gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (74ms) : 64, 83
. : milestone, 74,
master - mean (76ms) : 63, 89
. : milestone, 76,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (995ms) : 977, 1013
. : milestone, 995,
master - mean (994ms) : 970, 1017
. : milestone, 994,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (109ms) : 105, 113
. : milestone, 109,
master - mean (110ms) : 107, 113
. : milestone, 110,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (701ms) : 679, 722
. : milestone, 701,
master - mean (703ms) : 681, 724
. : milestone, 703,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (93ms) : 90, 95
. : milestone, 93,
master - mean (94ms) : 90, 98
. : milestone, 94,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (656ms) : 632, 679
. : milestone, 656,
master - mean (655ms) : 639, 672
. : milestone, 655,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (192ms) : 188, 196
. : milestone, 192,
master - mean (191ms) : 186, 195
. : milestone, 191,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (1,101ms) : 1080, 1123
. : milestone, 1101,
master - mean (1,082ms) : 1059, 1106
. : milestone, 1082,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (278ms) : 273, 283
. : milestone, 278,
master - mean (277ms) : 269, 284
. : milestone, 277,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (881ms) : 852, 910
. : milestone, 881,
master - mean (878ms) : 846, 910
. : milestone, 878,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5714) - mean (266ms) : 261, 271
. : milestone, 266,
master - mean (266ms) : 261, 270
. : milestone, 266,
section CallTarget+Inlining+NGEN
This PR (5714) - mean (871ms) : 846, 896
. : milestone, 871,
master - mean (861ms) : 840, 882
. : milestone, 861,
Benchmarks for #5714 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored.
Throughput results for AspNetCoreSimpleController comparing the following branches/commits:
Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red.
Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards!
gantt
title Throughput Linux x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5714) (11.660M) : 0, 11660093
master (11.593M) : 0, 11593369
benchmarks/2.9.0 (11.542M) : 0, 11542126
section Automatic
This PR (5714) (7.810M) : 0, 7809523
master (7.827M) : 0, 7827212
benchmarks/2.9.0 (8.263M) : 0, 8262905
section Trace stats
master (8.118M) : 0, 8118390
section Manual
This PR (5714) (10.151M) : 0, 10150667
master (9.920M) : 0, 9920204
section Manual + Automatic
This PR (5714) (7.419M) : 0, 7418696
master (7.358M) : 0, 7357979
section Version Conflict
master (6.635M) : 0, 6634804
gantt
title Throughput Linux arm64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5714) (9.673M) : 0, 9672650
master (9.689M) : 0, 9688586
benchmarks/2.9.0 (9.596M) : 0, 9596140
section Automatic
This PR (5714) (6.616M) : 0, 6615957
master (6.298M) : 0, 6298066
section Trace stats
master (6.862M) : 0, 6861645
section Manual
This PR (5714) (8.481M) : 0, 8481153
master (8.028M) : 0, 8028063
section Manual + Automatic
This PR (5714) (6.143M) : 0, 6142715
master (6.139M) : 0, 6139377
section Version Conflict
master (5.667M) : 0, 5667497
gantt
title Throughput Windows x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5714) (10.334M) : 0, 10333593
master (10.241M) : 0, 10241408
benchmarks/2.9.0 (10.213M) : 0, 10213239
section Automatic
This PR (5714) (7.281M) : 0, 7280835
master (7.186M) : 0, 7186302
benchmarks/2.9.0 (7.482M) : 0, 7482023
section Trace stats
master (7.568M) : 0, 7568098
section Manual
This PR (5714) (9.154M) : 0, 9154475
master (9.213M) : 0, 9213352
section Manual + Automatic
This PR (5714) (7.051M) : 0, 7050998
master (7.004M) : 0, 7004280
section Version Conflict
master (6.289M) : 0, 6288694
Summary of changes
Allow providing additional "converters" for types other than the generic
T
, such asint
andbool
Reason for change
The otel-specific code introduced in https://github.com/DataDog/dd-trace-dotnet/pull/5661 requires performing non-standard conversions to some primitive types. For example, for a
bool
the required values might be"none"
=true
, which requires usingGetAs<>
to handle the conversion.This PR adds additional overloads so that you can call
GetAsBool
which makes the usages more obvious (and simplifies some things in subsequent PRs)Implementation details
Add additional, optional, "converter" arguments (
Func<string, ParsingResult<bool>>
) to the methods that don't already have themTest coverage
Add unit tests for the new conversion behaviour
Other details
This is part of a big stack of config refactoring PRs: