This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Runtime.InteropServices; | |
namespace EvilArray | |
{ | |
/// <summary> | |
/// Cast an array of structs to an array of byte[] | |
/// </summary> | |
class Program | |
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using CecilTool; | |
using Mono.Cecil; | |
namespace CecilTool | |
{ | |
/// <summary> | |
/// Simple tool using Mono.Cecil to dump the list of usage of internals methods/fields |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Runtime.CompilerServices; | |
using System.Runtime.Intrinsics; | |
using System.Text; | |
using BenchmarkDotNet.Attributes; | |
using StarkPlatform.NativeCompiler.Utils; | |
namespace StarkPlatform.NativeCompiler.Benchmarks | |
{ | |
[DisassemblyDiagnoser] | |
public class BenchXXH3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The following benchmark shows a barely known capability of GCHandle to be reused via their .Target | |
// as it is avoiding to reallocate an expensive entry into the GC table handle in the CLR runtime | |
/* | |
BenchmarkDotNet=v0.10.12, OS=Windows 10.0.18362 | |
AMD Ryzen 9 3900X 12-Core Processor, 1 CPU, 24 logical cores and 12 physical cores | |
.NET Core SDK=3.0.100-rc1-014190 | |
[Host] : .NET Core 2.1.13 (Framework 4.6.28008.01), 64bit RyuJIT | |
DefaultJob : .NET Core 2.1.13 (Framework 4.6.28008.01), 64bit RyuJIT | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright 2019 - Alexandre MUTEL - License MIT | |
using System; | |
using System.Diagnostics; | |
using System.Runtime.InteropServices; | |
using System.Text; | |
// Example of running a Linux command from .NET that can run transparently on Windows (via WSL) or Linux | |
// Assuming you are running on the same distribution, you can integrate this in your tests for example. | |
namespace YourNameSpace.Tests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create a .NET Core project, target also net472 | |
// Requires to install NuGet package InlineIL.Fody https://github.com/ltrzesniewski/InlineIL.Fody in your project | |
// Run this program | |
using System; | |
using InlineIL; | |
namespace PlayIL | |
{ | |
class Program | |
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Feedback on https://github.com/YohDeadfall/Yoh.Tuples | |
/* | |
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | | |
|---------------- |----------:|---------:|---------:|-------:|------:|------:|----------:| | |
| TestSimpleTuple | 50.02 ns | 0.423 ns | 0.396 ns | 0.0229 | - | - | 192 B | | |
| TestYohTuple | 739.97 ns | 1.783 ns | 1.580 ns | 0.1822 | - | - | 1528 B | | |
*/ | |
using System; | |
using System.Runtime.CompilerServices; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.CodeDom; | |
using System.CodeDom.Compiler; | |
using System.IO; | |
using System.Text; | |
using Microsoft.CodeAnalysis; | |
using Microsoft.CodeAnalysis.CSharp; | |
using Microsoft.CodeAnalysis.Formatting; | |
using NUnit.Framework; | |
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | Method | Mean | Error | StdDev | | |
// |------------- |----------:|----------:|----------:| | |
// | Calli | 0.6718 ns | 0.0013 ns | 0.0012 ns | | |
// | Delegate | 1.1366 ns | 0.0099 ns | 0.0088 ns | | |
// | FastDelegate | 1.6239 ns | 0.0103 ns | 0.0097 ns | | |
// MyClassLib.cs is compiled in another project (havent tested if compiling with Fody is working with BenchmarkDotnet in the same project) | |
// This file is referencing BenchDelegates.MyClassLib | |
using System; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// proof of concept for breaking https://unbreakable-test.azurewebsites.net/ | |
using System; | |
using System.Runtime.CompilerServices; | |
using System.Runtime.InteropServices; | |
static class Program { | |
[MethodImpl(MethodImplOptions.NoInlining)] | |
public static void MethodToPatch() | |
{ | |
} |