-
-
Notifications
You must be signed in to change notification settings - Fork 962
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Measurement metric issue #1515
Comments
I've seen similar things happening when you hit this bug: #1338 Since that issue, it's fairly common that number of invocations suddenly doesn't increase, but only does 1 invocation on each iteration, and that reported numbers are off by a factor of 1000, plus extreme outliers. Not entirely sure it's the same issue, but have a look at your full report for how many invocations you have. I'd fix that issue myself, but I need a bit of guidance from @adamsitnik or someone else with intimate knowledge of the related change. |
I'm not sure what I'm supposed to see in this case but let me paste my result here for sanity check. In my opinion the operation count seems to be just fine and the result as well. As summary at the end of the run just states it right. Even the detailed result states the same. On the other hand the summary table at the end... It's just missed the unit. // ************************** // Benchmark Process Environment Information: OverheadJitting 1: 1 op, 472100.00 ns, 472.1000 us/op OverheadJitting 2: 16 op, 427200.00 ns, 26.7000 us/op WorkloadPilot 1: 16 op, 82600.00 ns, 5.1625 us/op OverheadWarmup 1: 262144 op, 871000.00 ns, 3.3226 ns/op OverheadActual 1: 262144 op, 770700.00 ns, 2.9400 ns/op WorkloadWarmup 1: 262144 op, 583237300.00 ns, 2.2249 us/op // BeforeActualRun // AfterActualRun // AfterAll Mean = 2.020 us, StdErr = 0.009 us (0.45%), N = 14, StdDev = 0.034 us |
No, you are right. Not just the unit, there's a *1000 multiplication as well... My bad! |
These ones are important. If it would say Normally, you should see what you see now, 262144 operations (that is, invocations of your measured function), taking in total 535302000.00 ns, which is close to 2.0420 us per operation (or 2,042.00ns). |
I'm copying my test results as sample. If you take a look into the details and into the summary it looks like us are shown as ns which is obviously shouldn't be happening.
// * Detailed results *
LookupBenchmark.LookupLinq: .NET 4.7.2(Runtime=.NET 4.7.2)
Runtime = .NET Framework 4.8 (4.8.4018.0), X64 RyuJIT; GC = Concurrent Workstation
Mean = 1.883 us, StdErr = 0.008 us (0.41%), N = 14, StdDev = 0.029 us
Min = 1.851 us, Q1 = 1.859 us, Median = 1.876 us, Q3 = 1.899 us, Max = 1.938 us
IQR = 0.040 us, LowerFence = 1.799 us, UpperFence = 1.959 us
ConfidenceInterval = [1.851 us; 1.915 us] (CI 99.9%), Margin = 0.032 us (1.71% of Mean)
Skewness = 0.59, Kurtosis = 1.92, MValue = 2
-------------------- Histogram --------------------
[1.846 us ; 1.954 us) | @@@@@@@@@@@@@@
LookupBenchmark.LookupLinq: .NET Core 3.1(Runtime=.NET Core 3.1)
Runtime = .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT; GC = Concurrent Workstation
Mean = 2.020 us, StdErr = 0.009 us (0.45%), N = 14, StdDev = 0.034 us
Min = 1.974 us, Q1 = 1.987 us, Median = 2.026 us, Q3 = 2.042 us, Max = 2.070 us
IQR = 0.054 us, LowerFence = 1.906 us, UpperFence = 2.123 us
ConfidenceInterval = [1.982 us; 2.059 us] (CI 99.9%), Margin = 0.038 us (1.89% of Mean)
Skewness = -0.04, Kurtosis = 1.42, MValue = 2
-------------------- Histogram --------------------
[1.972 us ; 2.020 us) | @@@@@@
[2.020 us ; 2.089 us) | @@@@@@@@
LookupBenchmark.LookupDictionary: .NET 4.7.2(Runtime=.NET 4.7.2)
Runtime = .NET Framework 4.8 (4.8.4018.0), X64 RyuJIT; GC = Concurrent Workstation
Mean = 38.878 ns, StdErr = 0.145 ns (0.37%), N = 15, StdDev = 0.562 ns
Min = 38.175 ns, Q1 = 38.385 ns, Median = 38.840 ns, Q3 = 39.280 ns, Max = 39.888 ns
IQR = 0.895 ns, LowerFence = 37.043 ns, UpperFence = 40.623 ns
ConfidenceInterval = [38.278 ns; 39.478 ns] (CI 99.9%), Margin = 0.600 ns (1.54% of Mean)
Skewness = 0.28, Kurtosis = 1.62, MValue = 2
-------------------- Histogram --------------------
[38.060 ns ; 40.187 ns) | @@@@@@@@@@@@@@@
LookupBenchmark.LookupDictionary: .NET Core 3.1(Runtime=.NET Core 3.1)
Runtime = .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT; GC = Concurrent Workstation
Mean = 26.929 ns, StdErr = 0.167 ns (0.62%), N = 40, StdDev = 1.053 ns
Min = 25.665 ns, Q1 = 25.925 ns, Median = 26.731 ns, Q3 = 27.905 ns, Max = 30.347 ns
IQR = 1.980 ns, LowerFence = 22.955 ns, UpperFence = 30.876 ns
ConfidenceInterval = [26.337 ns; 27.522 ns] (CI 99.9%), Margin = 0.593 ns (2.20% of Mean)
Skewness = 0.85, Kurtosis = 3.57, MValue = 2.42
-------------------- Histogram --------------------
[25.261 ns ; 26.548 ns) | @@@@@@@@@@@@@@@@@@@
[26.548 ns ; 27.362 ns) | @@@@@@@
[27.362 ns ; 28.171 ns) | @@@@@@@@@@@
[28.171 ns ; 29.521 ns) | @@
[29.521 ns ; 30.752 ns) | @
// * Summary *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.535 (1909/November2018Update/19H2)
Intel Core i7-8565U CPU 1.80GHz (Whiskey Lake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=3.1.401
[Host] : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
.NET 4.7.2 : .NET Framework 4.8 (4.8.4018.0), X64 RyuJIT
.NET Core 3.1 : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
// * Hints *
Outliers
LookupBenchmark.LookupLinq: .NET 4.7.2 -> 1 outlier was removed (2.03 us)
LookupBenchmark.LookupLinq: .NET Core 3.1 -> 1 outlier was removed (2.19 us)
LookupBenchmark.LookupDictionary: .NET Core 3.1 -> 1 outlier was removed (35.47 ns)
// * Legends *
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Ratio : Mean of the ratio distribution ([Current]/[Baseline])
RatioSD : Standard deviation of the ratio distribution ([Current]/[Baseline])
1 ns : 1 Nanosecond (0.000000001 sec)
// ***** BenchmarkRunner: End *****
// ** Remained 0 benchmark(s) to run **
Run time: 00:01:20 (80.76 sec), executed benchmarks: 4
Global total time: 00:01:30 (90.03 sec), executed benchmarks: 4
The text was updated successfully, but these errors were encountered: