Skip to content

Instantly share code, notes, and snippets.

View adamsitnik's full-sized avatar
😴
I am offline.

Adam Sitnik adamsitnik

😴
I am offline.
View GitHub Profile
@adamsitnik
adamsitnik / linux_results.txt
Last active November 26, 2019 20:53
long gc pauses
avg(ms) max(ms) benchmark name
329.60 560.94 StackWalk.Walk
119.10 130.06 CtorDefaultSize<String>.ConcurrentBag
109.36 109.88 CtorDefaultSize<Int32>.ConcurrentBag
79.73 85.14 Perf_Timer.ShortScheduleAndDisposeWithFiringTimers
69.34 71.48 Perf_Timer.ScheduleManyThenDisposeMany
48.39 72.92 Double.Pow
37.15 53.83 Perf_DateTime.GetUtcNow
36.46 42.97 Perf_ThreadStatic.GetThreadStatic
32.29 79.36 Single.Cbrt
@adamsitnik
adamsitnik / example.cs
Created September 23, 2019 09:12
params_valuetuples
public class StringHash
{
public static IEnumerable<(CultureInfo CultureInfo, CompareOptions CompareOptions)> GetOptions()
{
// Ordinal and OrdinalIgnoreCase use single execution path for all cultures, so we test it only for "en-US"
yield return (new CultureInfo("en-US"), CompareOptions.Ordinal);
yield return (new CultureInfo("en-US"), CompareOptions.OrdinalIgnoreCase);
yield return (new CultureInfo("en-US"), CompareOptions.None);
yield return (new CultureInfo("en-US"), CompareOptions.IgnoreCase);
@adamsitnik
adamsitnik / Benchmarks.csproj
Last active August 26, 2019 13:48
How to compare local changes vs nuget package using single BDN config
<Project Sdk="Microsoft.NET.Sdk">
<!-- IMPORTANT! MSBuild sets the Optimize=true only if the Configuration name == Release -->
<PropertyGroup Condition="$(Configuration.StartsWith('Release'))">
<Optimize>true</Optimize>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Release' Or '$(Configuration)' == 'Debug' ">
<ProjectReference Include="SomeProject.csproj" />
</ItemGroup>
{"exporter": "speedscope@1.3.2", "name": "blog2_full.speedscope", "activeProfileIndex": 0, "$schema": "https://www.speedscope.app/file-format-schema.json", "shared": { "frames": [ { "name": "Process64 ABABABABABA (19392) Args: " }, { "name": "Thread (9076) CPU=1300ms (Startup Thread)" }, { "name": "ntdll!RtlUserThreadStart" }, { "name": "ntoskrnl!KiStartUserThreadReturn" }, { "name": "ntoskrnl!KiStartUserThread" }, { "name": "ntoskrnl!PspUserThreadStartup" }, { "name": "ntoskrnl!DbgkCreateThread" }, { "name": "ntoskrnl!PsCallImageNotifyRoutines" }, { "name": "mssecflt!?" }, { "name": "fltmgr!FltCreateFileEx" }, { "name": "fltmgr!FltpCreateFile" }, { "name": "ntoskrnl!IoCreateFileEx" }, { "name": "ntoskrnl!IopCreateFile" }, { "name": "ntoskrnl!ObOpenObjectByNameEx" }, { "name": "ntoskrnl!ObpLookupObjectName" }, { "name": "ntoskrnl!IopParseDevice" }, { "name": "ntoskrnl!IoCallDriverWithTracing" }, { "name": "ntoskrnl!IofCallDriver" }, { "name": "fltmgr!FltpCreate" }, { "name": "fltmgr!FltpLegacyProcessingAfterP
@adamsitnik
adamsitnik / simple_example.json
Created January 6, 2019 14:25
Simple SpeedScope example
{"exporter": "speedscope@1.3.2", "name": "simple_example", "activeProfileIndex": 0, "$schema": "https://www.speedscope.app/file-format-schema.json", "shared": { "frames": [ { "name": "Process64 ConsoleApp18 (16156) Args: " }, { "name": "Thread (21900) CPU=348ms (Startup Thread)" }, { "name": "ntdll!RtlUserThreadStart" }, { "name": "ntoskrnl!KiStartUserThreadReturn" }, { "name": "ntoskrnl!KiStartUserThread" }, { "name": "ntoskrnl!PspUserThreadStartup" }, { "name": "ntoskrnl!DbgkCreateThread" }, { "name": "ntoskrnl!PsCallImageNotifyRoutines" }, { "name": "mssecflt!?" }, { "name": "fltmgr!FltCreateFileEx" }, { "name": "fltmgr!FltpCreateFile" }, { "name": "ntoskrnl!IoCreateFileEx" }, { "name": "ntoskrnl!IopCreateFile" }, { "name": "ntoskrnl!ObOpenObjectByNameEx" }, { "name": "ntoskrnl!ObpLookupObjectName" }, { "name": "ntoskrnl!IopParseDevice" }, { "name": "ntoskrnl!IoCallDriverWithTracing" }, { "name": "ntoskrnl!IofCallDriver" }, { "name": "fltmgr!FltpCreate" }, { "name": "fltmgr!FltpPassThroughInternal" }, { "n
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
using BenchmarkDotNet.Attributes;
namespace BenchmarkDotNet.Samples
{
public class MathNano
{
@adamsitnik
adamsitnik / Benchmarks.cs
Created September 10, 2018 15:20
summaryJoinOrderBy
using System;
using System.Linq;
using System.Threading;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Diagnosers;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Order;
using BenchmarkDotNet.Running;
public class DebugVsRelease : ManualConfig
{
public DebugVsRelease()
{
IToolchain toolchain = // to rebuild the project we need to use the CsProj toolchain not the Roslyn one (the default for .NET)
#if NETFRAMEWORK
CsProjClassicNetToolchain.Current.Value;
#else
CsProjCoreToolchain.Current.Value;
@adamsitnik
adamsitnik / Consumer.cs
Last active July 19, 2018 17:46
Consumer
using System;
using System.Runtime.CompilerServices;
using System.Threading;
namespace Benchmarks
{
public class Consumer
{
private volatile byte byteHolder;
private volatile sbyte sbyteHolder;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System.Collections.Generic;
using System.Linq;
namespace ConcreteVsAbstract
{
class Program
{
static void Main(string[] args) => BenchmarkRunner.Run<Benchmarks>();