Skip to content

Instantly share code, notes, and snippets.

mattwarren / UnsafeWithoutKeyword.cs
Created Sep 4, 2019 — forked from nguerrera/UnsafeWithoutKeyword.cs
Absence of 'unsafe' C# keyword/switch does not guarantee type or memory safety.
View UnsafeWithoutKeyword.cs
The absence of the C# unsafe keyword and switch does not guarantee code
is type or memory safe. It merely prevents the use of pointer types and
fixed size buffers.
The only thing that can guarantee type and memory safety is
verification and CAS/transparency enforcement.
In particular, the absence of unsafe C# blocks does NOT:
mattwarren /
Created Jul 4, 2018 — forked from mrange/
On the topic of tail calls in .NET

On the topic of tail calls in .NET

Let's say you have implemented a small data pipeline library to replace LINQ.

module TrivialStream =
  type Receiver<'T> = 'T            -> unit
  type Stream<'T>   = Receiver<'T>  -> unit

  module Details =
View ValueLinqBenchmarks.cs
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Attributes.Columns;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Running;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
mattwarren / veh_hook.cpp
Created Jan 5, 2018 — forked from ReubenBond/veh_hook.cpp
INT3 Vectored Exception Handler hooking
View veh_hook.cpp
veh_hook Vectored Exception Handler hooking library
Version: 24-March-2008
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include "veh_hook.h"
static veh_list_t* list = NULL;
mattwarren / BenchLinearVsBinary.cs
Created Nov 2, 2016 — forked from xoofx/BenchLinearVsBinary.cs
Performance between a linear and binary search on a small ordered set
View BenchLinearVsBinary.cs
Q: At which size is it preferrable to use binary search over a simple linear search for a small ordered set?
R: Under 5 elements, linear search is slightly faster (from 200% to 10% faster)
But in practice, not sure a switch case to select the best method is really worth it
Unless main usecase is having most of the time only 1-2 elements (so it could be optimized manually without a loop and switch to binary otherwise)
At 3-4 elements, linear is only 10-5% faster
Relative performance between linear and binary search:
size x86 x64
View ContinueWithAllocations.cs
public class ContinueWithAllocations
private class Config : ManualConfig
public Config()
Add(new MemoryDiagnoser());
mattwarren / clrmd-sdd-demo.cs
Created May 23, 2016 — forked from goldshtn/clrmd-sdd-demo.cs
CLRMD demo shown at SDD 2016
View clrmd-sdd-demo.cs
using Microsoft.Diagnostics.Runtime;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SDDTriage
You can’t perform that action at this time.