Skip to content

Instantly share code, notes, and snippets.

View viceroypenguin's full-sized avatar
💻

Stuart Turner viceroypenguin

💻
View GitHub Profile
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
@viceroypenguin
viceroypenguin / benchmark.cs
Created February 5, 2024 19:34
list vs array vs ilist
#load "BenchmarkDotNet"
void Main()
{
RunBenchmark();
}
public List<int> _list = Enumerable.Range(1, 1_000_000).ToList();
public int[] _array = Enumerable.Range(1, 1_000_000).ToArray();
@viceroypenguin
viceroypenguin / countdown-bench.linq
Last active January 23, 2023 16:12
count down bench
#load "BenchmarkDotNet"
void Main()
{
// Second, it adds a call to RunBenchmark (defined in BenchmarkDotNet.linq)
RunBenchmark();
}
[Benchmark]
public void SuperLinqCountDown()
@viceroypenguin
viceroypenguin / IntParse.cs
Created December 1, 2022 16:20
Benchmark w/ SIMD
BenchmarkRunner.Run<Benchmark>();
[SimpleJob(RuntimeMoniker.Net60)]
[SimpleJob(RuntimeMoniker.Net70)]
[MemoryDiagnoser]
public class Benchmark
{
private readonly string[] _inputs = Enumerable.Range(0, 100).Select(_ => Random.Shared.Next(0, 1000).ToString()).ToArray();
[Benchmark]
@viceroypenguin
viceroypenguin / SequentialGuid.cs
Last active January 28, 2024 14:16
Sequential Guid Generator in C#
public static class SequentialGuid
{
private static long s_high;
private static long s_low;
private static volatile int s_lockFlag;
private const int Unintialized = 0;
private const int Initializing = 1;
private const int Initialized = 2;
private const int Waiting = 3;
#nullable enable
string? LongestCommonSubstring(string a, string b, int minLength)
{
var sa = a.AsSpan();
var sb = b.AsSpan();
var prevRow = new int[b.Length];
var curRow = new int[b.Length];
public static async IAsyncEnumerable<TTarget> SelectBoundedProducer(
IEnumerable<TSource> enumerable,
Func<TSource, Task<TTarget>> projection,
int maxConcurrency,
CancellationToken token = default)
{
var tasks = new List<Task<TTarget>>(maxConcurrency);
var enumeration = enumerable.GetEnumerator();
while (enumeration.MoveNext())
"1,2,1,1,0,3,1,0,0,2,4,1,0,0,0,0,2,1,0,3,1,0,0,0,6,1,3,0,0,0"
.Split(',')
.Select(x => Convert.ToInt32(x))
.Segment((cur, prev, idx) => cur != prev)
.Where(x => x.First() == 0)
.Select(x => x.Count())
.Max()
<UserSettings>
<ApplicationIdentity version="15.0"/>
<ToolsOptions>
<ToolsOptionsCategory name="Environment" RegisteredName="Environment"/>
</ToolsOptions>
<Category name="Environment_Group" RegisteredName="Environment_Group">
<Category name="Environment_FontsAndColors" Category="{1EDA5DD4-927A-43a7-810E-7FD247D0DA1D}" Package="{DA9FB551-C724-11d0-AE1F-00A0C90FFFC3}" RegisteredName="Environment_FontsAndColors" PackageName="Visual Studio Environment Package">
<PropertyValue name="Version">2</PropertyValue>
<FontsAndColors Version="2.0">
<Theme Id="{1DED0138-47CE-435E-84EF-9EC1F439B749}"/>