Skip to content

Instantly share code, notes, and snippets.

@shmutalov
shmutalov / Tuple_vs_Struct.cs
Last active August 30, 2018 13:16
Tuple vs Struct benchmark
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
[DisassemblyDiagnoser(true, true, true)]
[RyuJitX64Job]
public class Tuple_vs_Struct
{
[Params(1000000)]
public int LoopCount { get; set; }
public (int kek, long lol, double wut)[] _tupleArray;
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
[DisassemblyDiagnoser(true, true, true)]
[RyuJitX64Job]
public class Tuple_DirectAccess_vs_Decomposition
{
[Params(100000)]
public int LoopCount { get; set; }
public (int kek, long lol, double wut)[] _tupleArray;
@shmutalov
shmutalov / DeviceExt.cs
Created August 24, 2018 10:49
DeviceExt.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SmartHomeManager.Models;
using YeelightAPI;
namespace SmartHomeManager.Utils
{
public static class DeviceExt
@shmutalov
shmutalov / Dict_ContainsGet_vs_TryGet.cs
Created August 23, 2018 05:52
TryGetValue vs Contains + Item #2
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[MemoryDiagnoser]
[DisassemblyDiagnoser(true, true, true)]
[RyuJitX64Job]
public class Dict_ContainsGet_vs_TryGet
{
[Params(100_000)]
public int Count { get; set; }
private Dictionary<int, string> _dict;
private int _key;
@shmutalov
shmutalov / Dict_ContainsGet_vs_TryGet.cs
Created August 23, 2018 05:49
TryGetValue vs Contains+Item
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[MemoryDiagnoser]
[DisassemblyDiagnoser(true, true, true)]
[RyuJitX64Job]
public class Dict_ContainsGet_vs_TryGet
{
[Params(100_000)]
public int Count { get; set; }
private Dictionary<int, string> _dict;
private string _value;
@shmutalov
shmutalov / Array_ByIndex_vs_CreateLocal.cs
Created August 16, 2018 10:25
Benchmark example rewrite + class
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
public class Array_ByIndex_vs_CreateLocal
{
[Params(1_000_000)]
public int LoopCount { get; set; }
public Arr1[] _Array1;
public Arr2[] _Array2;
@shmutalov
shmutalov / Array_ByIndex_vs_CreateLocal.cs
Created August 16, 2018 10:10
Benchmark example rewrite + ref locals
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
public class Array_ByIndex_vs_CreateLocal
{
[Params(1_000_000)]
public int LoopCount { get; set; }
public Arr[] _Array;
[GlobalSetup]
@shmutalov
shmutalov / Array_ByIndex_vs_CreateLocal.cs
Created August 16, 2018 09:47
Benchmark example rewrite
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
public class Array_ByIndex_vs_CreateLocal
{
[Params(1_000_000)]
public int LoopCount { get; set; }
public Arr[] _Array;
[GlobalSetup]
[OrderProvider(SummaryOrderPolicy.FastestToSlowest)]
[RankColumn]
[MemoryDiagnoser]
public class Array_ByIndex_vs_CreateLocal
{
[Params(1_000_000)]
public int LoopCount { get; set; }
public Arr[] _Array;
[GlobalSetup]
#!/bin/bash
set -e
home=$(pwd)
INIT_SYSTEM="unknown"
SERVICE_NAME="<Имя сервиса>" # Имя твоего сервиса, например mydotnetserver
SERVICE_DESCRIPTION="<Описание твоего сервиса>"
PROJECT_PATH="$home/" # Путь к папке с файлом Server.dll