Skip to content

Instantly share code, notes, and snippets.

View MarkPflug's full-sized avatar
🌲

Mark Pflug MarkPflug

🌲
View GitHub Profile
@MarkPflug
MarkPflug / TimeTest.cs
Created August 25, 2017 22:57
Test DateTime.UtcNow resolution
using System;
class Program
{
static void Main(string[] args)
{
int total = 0;
int count = 0;
while (true) {
count++;
var start = DateTime.UtcNow;
@MarkPflug
MarkPflug / SqlReadBinaryData.cs
Created January 31, 2019 23:48
Read binary(16) and rowversion
using System;
using System.Data.SqlClient;
using System.Runtime.InteropServices;
class Program
{
static void Main()
{
var dbName = "Test" + DateTime.Now.ToString("yyyyMMddHHmmss");
@MarkPflug
MarkPflug / IgnoreWhitespaceStringComparer.cs
Last active November 19, 2021 08:15
IgnoreWhitespaceStringComparer
using System;
using System.Collections.Generic;
namespace Sylvan
{
public sealed class IgnoreWhitespaceStringComparer : IEqualityComparer<string>
{
public static readonly IEqualityComparer<string> Instance = new IgnoreWhitespaceStringComparer(0);
public static readonly IEqualityComparer<string> IgnoreCase = new IgnoreWhitespaceStringComparer(0x20);
@MarkPflug
MarkPflug / ArrayForeachElementTrick.cs
Created October 12, 2021 22:37
Stupid array trick
static class Program
{
public static void Main()
{
int[] data = new int[12];
// foreach over refs to the elements of the array
foreach(ref int elem in data.Refs())
{
elem = 1;
@MarkPflug
MarkPflug / QuickIntBench.cs
Created November 19, 2021 03:43
A SIMD integer parser.
using BenchmarkDotNet.Attributes;
using System;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
using System.Text;
namespace Benchmarks
{
public class QuickIntBench
{
@MarkPflug
MarkPflug / CpuDiagnoser.cs
Created December 6, 2021 04:21
BenchmarkDotNet CPU utilization
using BenchmarkDotNet.Analysers;
using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Diagnosers;
using BenchmarkDotNet.Engines;
using BenchmarkDotNet.Exporters;
using BenchmarkDotNet.Loggers;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
using BenchmarkDotNet.Validators;
@MarkPflug
MarkPflug / IndentingTextWriter.cs
Created April 21, 2022 18:01
IndentingTextWriter for C-style languages
using System.Text;
namespace Sylvan.IO;
sealed class IndentingTextWriter : TextWriter
{
const char OpenChar = '{';
const char CloseChar = '}';
const string DefaultIndent = " ";
@MarkPflug
MarkPflug / ExcelToHtml.cs
Created November 7, 2022 16:53
Excel to HTML
using Sylvan.Data.Excel;
using var r = ExcelDataReader.Create("Data.xlsx");
r.WriteHtmlTable(Console.Out);
static class DataExtensions
{
public static long WriteHtmlTable(this System.Data.Common.DbDataReader data, TextWriter writer)
{
long count = 0;
@MarkPflug
MarkPflug / StructCsv.cs
Created March 24, 2023 15:26
A low-allocation CSV struct writer
using System.Collections;
using System.Collections.ObjectModel;
using System.Data.Common;
using System.Diagnostics;
var rand = new Random();
var data =
Enumerable
.Range(0, 10000000)
@MarkPflug
MarkPflug / CsvValidationExample.cs
Last active April 20, 2023 20:59
CSV Validation Example
// C# 11 and .NET 6+
using Sylvan.Data; // 0.2.12-B0001
using Sylvan.Data.Csv; // 1.2.7
// the schema for the csv data below.
var schema =
new Schema.Builder()
// ID is required!
.Add<int>("Id")