Experiment with this gist in Gistlyn.
Let's start with the big guns: Discriminated Union in C#.
| /* | |
| StackPool is faster by far >10 times than ScanPool. | |
| Other features: | |
| - Does not consume memory from the start - it grows only when you Return object to it. | |
| - Forgiving for no Return scenarios, that means when you not returning - memory is not consumed. So it is similar to `new` | |
| - May be put a limit on depth, NOT tested yet. | |
| */ |
| /* | |
| Inspired by: https://medium.com/@gcanti/introduction-to-optics-lenses-and-prisms-3230e73bfcfe | |
| */ | |
| using System; | |
| using static System.Console; | |
| public static class Program | |
| { | |
| public static void Main() |
| using System; | |
| using System.Collections.Generic; | |
| using static System.Console; | |
| namespace Union | |
| { | |
| class Program | |
| { | |
| public static void Main() | |
| { |
| using System; | |
| public class Test | |
| { | |
| public static void Main() | |
| { | |
| var x = ImZipper<int>.Empty.Pre(1).Pre(2); | |
| Console.WriteLine(x); | |
| Console.WriteLine(x.Focus); | |
| } |
Experiment with this gist in Gistlyn.
Let's start with the big guns: Discriminated Union in C#.
| /* | |
| https://dba.stackexchange.com/questions/96534/postgres-check-disk-space-taken-by-materialized-view?newreg=6b1d58604fce4a1fbe3033ddbb52d7ca | |
| relkind: | |
| r = ordinary table, | |
| i = index, | |
| S = sequence, | |
| v = view, | |
| m = materialized view, | |
| c = composite type, |
| // | 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; |
| using System; | |
| class Program | |
| { | |
| // M wants to get an instance via Func | |
| static void M(Func<string> factory) | |
| { | |
| Console.WriteLine(factory()); | |
| } |
| module EnvDemo | |
| open System | |
| open System.IO | |
| [<Struct>] | |
| type Nothing = | |
| private | |
| | Nothing |
| private DictionarySlim<TypeVal, string> _dict; | |
| public DictionarySlim<TypeVal, string> DictSlim() | |
| { | |
| var dict = new DictionarySlim<TypeVal, string>(); | |
| foreach (var key in _keys.Take(Count)) | |
| dict.GetOrAddValueRef(key) = "a"; | |
| dict.GetOrAddValueRef(typeof(ImHashMapBenchmarks)) = "!"; |