Skip to content

Instantly share code, notes, and snippets.

View JeremyKuhne's full-sized avatar
🏠
Working from home

Jeremy Kuhne JeremyKuhne

🏠
Working from home
  • Microsoft
  • Redmond, WA
View GitHub Profile
@JeremyKuhne
JeremyKuhne / NoBoxWrap.cs
Created March 6, 2019 01:46
Wrapping int comparison
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System;
using System.Runtime.CompilerServices;
namespace CoreMkRef
{
class Program
{
static void Main(string[] args)
@JeremyKuhne
JeremyKuhne / Slice.cs
Created October 20, 2018 00:34
Perf on slice
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
using System;
using System.Buffers;
using System.Runtime.CompilerServices;
namespace ConsoleApp10
{
public delegate Span<T> Allocator<T>(int length);
using System;
using System.Buffers;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
static class PoolingBenchmark
{
@JeremyKuhne
JeremyKuhne / FileSystemName.cs
Created March 9, 2018 01:33
FileSystemName
namespace System.IO.Enumeration
{
public static class FileSystemName
{
// Change '*' and '?' to '<', '>', and '"' to match Win32 behavior
public static string TranslateWin32Expression(string expression);
// This matches '*', '?', '<', '>', and '"' wildcards
public static bool MatchesWin32Expression(ReadOnlySpan<char> expression, ReadOnlySpan<char> name, bool ignoreCase = true);
@JeremyKuhne
JeremyKuhne / FileSystemEnumerator.cs
Created March 9, 2018 01:07
FileSystemEnumerator
namespace System.IO.Enumeration
{
public abstract class FileSystemEnumerator<TResult> : CriticalFinalizerObject, IEnumerator<TResult>
{
public FileSystemEnumerator(string directory, EnumerationOptions options = null) { }
protected virtual bool ShouldIncludeEntry(ref FileSystemEntry entry);
protected virtual bool ShouldRecurseIntoEntry(ref FileSystemEntry entry);
protected abstract TResult TransformEntry(ref FileSystemEntry entry);
protected virtual void OnDirectoryFinished(ReadOnlySpan<char> directory);
@JeremyKuhne
JeremyKuhne / CountFileBytes.cs
Created March 9, 2018 00:05
Counting file bytes example
public static long CountFileBytes(string directory, bool recursive)
{
return (new FileSystemEnumerable<long>(
directory,
(ref FileSystemEntry entry) => entry.Length,
new EnumerationOptions() { RecurseSubdirectories = recursive })
{
ShouldIncludePredicate = (ref FileSystemEntry entry) => !entry.IsDirectory
}).Sum();
}
@JeremyKuhne
JeremyKuhne / CountFiles.cs
Created March 8, 2018 23:58
Counting files example
public static int CountFiles(string directory, bool recursive)
{
return (new FileSystemEnumerable<int>(
directory,
(ref FileSystemEntry entry) => 1,
new EnumerationOptions() { RecurseSubdirectories = recursive })
{
ShouldIncludePredicate = (ref FileSystemEntry entry) => !entry.IsDirectory
}).Count();
}
@JeremyKuhne
JeremyKuhne / GetFilesWithExtensions.cs
Last active March 10, 2018 04:15
Sample to get files with given extensions
public static IEnumerable<FileInfo> GetFilesWithExtensions(string directory,
bool recursive, params string[] extensions)
{
return new FileSystemEnumerable<FileInfo>(
directory,
(ref FileSystemEntry entry) => (FileInfo)entry.ToFileSystemInfo(),
new EnumerationOptions() { RecurseSubdirectories = recursive })
{
ShouldIncludePredicate = (ref FileSystemEntry entry) =>
{
@JeremyKuhne
JeremyKuhne / FilenameEnumerable.cs
Created March 8, 2018 06:35
File name enumerable example
IEnumerable<string> fileNames =
new FileSystemEnumerable<string>(
@"C:\test",
(ref FileSystemEntry entry) => entry.FileName.ToString())
{
ShouldIncludePredicate = (ref FileSystemEntry entry) => !entry.IsDirectory
};
@JeremyKuhne
JeremyKuhne / NameEnumerable.cs
Last active March 8, 2018 06:27
File system name enumerable example
IEnumerable<string> fileAndDirectoryNames =
new FileSystemEnumerable<string>(@"C:\", (ref FileSystemEntry entry) => entry.FileName.ToString());