Skip to content

Instantly share code, notes, and snippets.

View admir-live's full-sized avatar

Admir Mujkic admir-live

View GitHub Profile
@admir-live
admir-live / TransactionAnalysisBenchmarkLinqAndPLinq.cs
Created May 14, 2024 05:34
This C# file benchmarks various LINQ and PLINQ methods for analyzing potentially fraudulent transactions in different dataset sizes.
using System.Security.Cryptography;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
public class Transaction
{
public decimal Amount { get; }
public TimeSpan TransactionTime { get; }
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
BenchmarkRunner.Run<PersonAgeSumPerformanceBenchmark>();
[MemoryDiagnoser]
@admir-live
admir-live / BoxingPerformanceBenchmark.cs
Created May 1, 2024 01:07
This C# code defines benchmark tests to compare the performance of boxing (using a non-generic number class) versus non-boxing (using a generic number class) operations on numeric values.
using System;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
public interface INumber
{
object NumericValue { get; set; }
}
public class Number : INumber
@admir-live
admir-live / YieldVsListPerformanceComparison.cs
Created April 25, 2024 22:37
Overview of C# Performance Benchmarking Code
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
namespace YieldVsListPerformanceComparison
{
public class Program
{
static void Main(string[] args)
{
BenchmarkRunner.Run<PerformanceBenchmarks>();
@admir-live
admir-live / DateParsingPerformanceComparison.cs
Created March 11, 2024 23:04
DateParsingPerformanceComparison
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
namespace ZeroAllocBenchmark
{
[MemoryDiagnoser]
public class DateParsingPerformanceComparison
{
private const string SampleDateString = "2024-03-13";
@admir-live
admir-live / CountVsAnyBenchmark.cs
Created March 5, 2024 20:21
CountVsAnyBenchmark.cs
[RankColumn]
public class CountVsAnyBenchmark
{
private List<int>? largeList;
private readonly Random random = new();
[Params(100, 10000, 1000000)]
public int NumberOfElements { get; set; }
[GlobalSetup]
@admir-live
admir-live / ExponentialBackoff.cs
Created February 29, 2024 23:46
ExponentialBackoff.cs
public sealed class ExponentialBackoff
{
private const double InitialDelayInSeconds = 1;
private const double MaximumDelayInSeconds = 60;
public static async Task<T> ExecuteWithExponentialBackoffAsync<T>(Func<Task<T>> operation, int maximumRetryAttempts = 5)
{
int currentRetryCount = 0;
double currentDelayInSeconds = InitialDelayInSeconds;
@admir-live
admir-live / IFormattableMoney.cs
Created February 27, 2024 23:10
IFormattable in .NET 8
using System.Collections.Concurrent;
using System.Globalization;
var money = new Money(1234.56m, "USD");
Console.WriteLine(money.ToString("N", new CultureInfo("en-EN"))); // 1,234.56 USD
money = new Money(1234.56m, "EUR");
Console.WriteLine(money.ToString("N", new CultureInfo("de-DE"))); // 1.234,56 EUR
money = new Money(1234.56m, "JPY");
@admir-live
admir-live / ExampleAKS.cs
Created February 24, 2024 16:37
Instructs the Garbage Collector to reconfigure itself by detecting the various memory limits on the system.
using System;
using System.IO;
namespace AKSExample
{
class Program
{
private static readonly string logFilePath = "memory_refresh_log.txt";
static void Main(string[] args)
@admir-live
admir-live / example.md
Created February 24, 2024 10:00
Example with EF Core in C#

1. Setting up an Entity Framework Model

  • Create Model Classes:
    public class MyFileRecord
    {
        public int Id { get; set; } 
        public string FileName { get; set; } // You might want to track the original file name
        public byte[] FileData { get; set; } 
    }