Skip to content

Commit 36ba1bb

Browse files
committed
Fixed unroll factor in InProcessNoEmit.
Fixed some EmitSameIL tests.
1 parent 3d1d955 commit 36ba1bb

File tree

4 files changed

+14
-27
lines changed

4 files changed

+14
-27
lines changed

src/BenchmarkDotNet/Templates/BenchmarkType.txt

+12-24
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,8 @@
302302
{
303303
result = overheadDelegate($PassArguments$);@Unroll@
304304
}
305-
var elapsed = startedClock.GetElapsed();
306305
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(result);
307-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
306+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
308307
}
309308

310309
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> OverheadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -316,9 +315,8 @@
316315
{
317316
result = overheadDelegate($PassArguments$);
318317
}
319-
var elapsed = startedClock.GetElapsed();
320318
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(result);
321-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
319+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
322320
}
323321

324322
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> WorkloadActionUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -330,9 +328,8 @@
330328
{
331329
result = workloadDelegate($PassArguments$);@Unroll@
332330
}
333-
var elapsed = startedClock.GetElapsed();
334331
NonGenericKeepAliveWithoutBoxing(result);
335-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
332+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
336333
}
337334

338335
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> WorkloadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -344,9 +341,8 @@
344341
{
345342
result = workloadDelegate($PassArguments$);
346343
}
347-
var elapsed = startedClock.GetElapsed();
348344
NonGenericKeepAliveWithoutBoxing(result);
349-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
345+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
350346
}
351347

352348
// we must not simply use DeadCodeEliminationHelper.KeepAliveWithoutBoxing<T> because it's generic method
@@ -377,9 +373,8 @@
377373
{
378374
value = overheadDelegate($PassArguments$);@Unroll@
379375
}
380-
var elapsed = startedClock.GetElapsed();
381376
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(value);
382-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
377+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
383378
}
384379

385380
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> OverheadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -391,9 +386,8 @@
391386
{
392387
value = overheadDelegate($PassArguments$);
393388
}
394-
var elapsed = startedClock.GetElapsed();
395389
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(value);
396-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
390+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
397391
}
398392

399393
private $WorkloadMethodReturnType$ workloadDefaultValueHolder = default($WorkloadMethodReturnType$);
@@ -407,9 +401,8 @@
407401
{
408402
alias = workloadDelegate($PassArguments$);@Unroll@
409403
}
410-
var elapsed = startedClock.GetElapsed();
411404
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(ref alias);
412-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
405+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
413406
}
414407

415408
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> WorkloadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -421,9 +414,8 @@
421414
{
422415
alias = workloadDelegate($PassArguments$);
423416
}
424-
var elapsed = startedClock.GetElapsed();
425417
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(ref alias);
426-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
418+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
427419
}
428420

429421
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization | System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
@@ -448,9 +440,8 @@
448440
{
449441
value = overheadDelegate($PassArguments$);@Unroll@
450442
}
451-
var elapsed = startedClock.GetElapsed();
452443
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(value);
453-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
444+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
454445
}
455446

456447
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> OverheadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -462,9 +453,8 @@
462453
{
463454
value = overheadDelegate($PassArguments$);
464455
}
465-
var elapsed = startedClock.GetElapsed();
466456
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxing(value);
467-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
457+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
468458
}
469459

470460
private $WorkloadMethodReturnType$ workloadDefaultValueHolder = default($WorkloadMethodReturnType$);
@@ -478,9 +468,8 @@
478468
{
479469
alias = workloadDelegate($PassArguments$);@Unroll@
480470
}
481-
var elapsed = startedClock.GetElapsed();
482471
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxingReadonly(alias);
483-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
472+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
484473
}
485474

486475
private System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan> WorkloadActionNoUnroll(System.Int64 invokeCount, Perfolizer.Horology.IClock clock)
@@ -492,9 +481,8 @@
492481
{
493482
alias = workloadDelegate($PassArguments$);
494483
}
495-
var elapsed = startedClock.GetElapsed();
496484
BenchmarkDotNet.Engines.DeadCodeEliminationHelper.KeepAliveWithoutBoxingReadonly(alias);
497-
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(elapsed);
485+
return new System.Threading.Tasks.ValueTask<Perfolizer.Horology.ClockSpan>(startedClock.GetElapsed());
498486
}
499487

500488
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization | System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]

src/BenchmarkDotNet/Toolchains/InProcess.NoEmit/InProcessNoEmitRunner.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ private static class Runnable
104104
{
105105
public static void RunCore(IHost host, BenchmarkCase benchmarkCase)
106106
{
107+
int unrollFactor = BenchmarkActionFactory.GetUnrollFactor(benchmarkCase);
107108
var target = benchmarkCase.Descriptor;
108109
var job = benchmarkCase.Job; // TODO: filter job (same as SourceCodePresenter does)?
109-
int unrollFactor = BenchmarkActionFactory.GetUnrollFactor(benchmarkCase);
110110

111111
// DONTTOUCH: these should be allocated together
112112
var instance = Activator.CreateInstance(benchmarkCase.Descriptor.Type);

src/BenchmarkDotNet/Toolchains/InProcess/BenchmarkActionFactory_Implementations.cs

-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ private ValueTask<ClockSpan> InvokeUnrollHardcoded(long repeatCount, IClock cloc
113113
var startedClock = clock.Start();
114114
for (long i = 0; i < repeatCount; i++)
115115
result = unrolledCallback();
116-
unrolledCallback();
117116
return new ValueTask<ClockSpan>(startedClock.GetElapsed());
118117
}
119118

src/BenchmarkDotNet/Toolchains/InProcess/InProcessRunner.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ private static class Runnable
101101
{
102102
public static void RunCore(IHost host, BenchmarkCase benchmarkCase, BenchmarkActionCodegen codegenMode)
103103
{
104+
int unrollFactor = BenchmarkActionFactory.GetUnrollFactor(benchmarkCase);
104105
var target = benchmarkCase.Descriptor;
105106
var job = benchmarkCase.Job; // TODO: filter job (same as SourceCodePresenter does)?
106-
int unrollFactor = BenchmarkActionFactory.GetUnrollFactor(benchmarkCase);
107107

108108
// DONTTOUCH: these should be allocated together
109109
var instance = Activator.CreateInstance(benchmarkCase.Descriptor.Type);

0 commit comments

Comments
 (0)