Skip to content

Instantly share code, notes, and snippets.

@adams85
adams85 / ImprovedAstVisitor.cs
Last active August 19, 2021 12:24
A revised AST visitor for Esprima.NET
public class ImprovedAstVisitor : AstVisitor
{
protected virtual bool RewriteArrowFunctions => true;
protected override void VisitArrayExpression(ArrayExpression arrayExpression)
{
for (int i = 0, n = arrayExpression.Elements.Count; i < n; i++)
{
Expression element = arrayExpression.Elements[i];
if (element != null)
@adams85
adams85 / perftest.cs
Created August 1, 2021 12:19
Benchmark for iterating over random-access collections
using System;
using System.Collections.Generic;
using System.Linq;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
namespace MyBenchmarks
{
[SimpleJob(RuntimeMoniker.NetCoreApp31)]
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Karambolo.Extensions.Logging.File" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
@adams85
adams85 / Program.cs
Created June 20, 2019 08:18
LinqToDB-EF Core integration
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using LinqToDB;
using LinqToDB.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleApp1
using System;
using System.Threading;
using System.Threading.Tasks;
namespace netcore
{
class Program
{
static async Task TestAsync()
{
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
namespace Sample
{
class Program
{
static readonly IConfiguration Configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Console;
namespace test
{
public abstract class EntityBase
{
public int Id { get; set; }
public byte[] RowVersion { get; set; }
@adams85
adams85 / AdminSettings.cs
Last active February 4, 2022 19:39
Updateable JSON settings in ASP.NET Core 2
namespace AspNetCoreApp
{
public class AdminSettings
{
public AdminSettings() { }
// copy constructor
public AdminSettings(AdminSettings other)
{
AdminEmail = other.AdminEmail;
@adams85
adams85 / SpinUntilLockTest.cs
Created August 8, 2018 20:24
SpinWait.SpinUntil lock test
var flag = 0;
var stopwatch = new Stopwatch();
ParameterizedThreadStart task = p => {
SpinWait.SpinUntil(() => Interlocked.CompareExchange(ref flag, 1, 0) == 0);
Console.WriteLine($"[{stopwatch.Elapsed}] Thread {p} has entered lock.");
Thread.Sleep(2000);
Console.WriteLine($"[{stopwatch.Elapsed}] Thread {p} is exiting lock.");
Interlocked.Exchange(ref flag, 0);
};