donderdag 18 november 2021

Branchless programming is sneller

Met "Branchless programming" probeer je branches te voorkomen. Dat doe je omdat de CPU de opkomende instructies in de pijplijn heeft en je niet wilt dat die verwijderd worden.

Branchless programming betekent niet dat je geen condities mag gebruiken.

In x64 bestaat de CMOVcc instructie. Die instructie is gemaakt voor branchless programming. De MOV wordt alleen gedaan als aan een conditie voldaan is. Daarmee hoef je dus geen branch (jump) te doen. Het code path blijft hetzelfde.

Zie deze youtube video.

maandag 15 november 2021

C# Newtonsoft JSON gebruiken i.p.v. default JSON serializer

nuget package Microsoft.AspNetCore.Mvc.NewtonsoftJson toevoegen. Ppak degene die bij je .NETCore versie past.

In de code, bijvoorbeeld in je startup moet je .AddNewtonsoftJson() toevoegen aan de elementen die je gebruikt:

Bijvoorbeeld:

services.AddMvc();
services.AddControllers();
services.AddControllersWithViews();
services.AddRazorPages();

wordt:

services.AddMvc().AddNewtonsoftJson();
services.AddControllers().AddNewtonsoftJson();
services.AddControllersWithViews().AddNewtonsoftJson();
services.AddRazorPages().AddNewtonsoftJson();


zondag 14 november 2021

Visual Studio CPP program crashes, now what?

So, my C/C++ program crashed it a random spot when running in release mode. What could be the problem?

Application Verifier 10.0 (x64) to the rescue!

It's in your Windows SDK, which normally is already installed with Visual Studio.