No dia 07/12/2019, participamos da primeira edição do Blumenau Dev Day.

Abaixo você confere nossa apresentação, os códigos utilizados nas demos e o resultado do Benchmark entre struct e classe.

using BenchmarkDotNet.Running;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Diagnosers;

namespace BlumenauDevDay
{
    class Program
    {
        static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<BenchmarkStructClass01>();
        }
    }

    [MemoryDiagnoser]
    public class BenchmarkStructClass01
    {
        [Benchmark]
        public void TestaStruct()
        {
            var coordenadasStruct = new CoordenadasStruct();
            coordenadasStruct.X = 10;
            coordenadasStruct.Y = 20;
        }

        [Benchmark]
        public void TestaClass()
        {
            var coordenadasClasse = new CoordenadasClasse();
            coordenadasClasse.X = 10;
            coordenadasClasse.Y = 20;
        }
    }
}
using BenchmarkDotNet.Running;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Diagnosers;

namespace BlumenauDevDay
{
    class Program
    {
        static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<BenchmarkStructClass02>();
        }
    }

    [RankColumn, MemoryDiagnoser]
    public class BenchmarkStructClass02
    {
        private readonly int tamanho = 1_000_000;

        [Benchmark]
        public void TestaStruct()
        {
            var structs = new CoordenadasStruct[tamanho];
            for (var i = 0; i < tamanho; ++i)
            {
                structs[i] = new CoordenadasStruct
                {
                    X = 100,
                    Y = 200
                };
            }
        }

        [Benchmark]
        public void TestaClass()
        {
            var classes = new CoordenadasClasse[tamanho];
            for (var i = 0; i < tamanho; ++i)
            {
                classes[i] = new CoordenadasClasse
                {
                    X = 100,
                    Y = 200
                };
            }
        }
    }
}

No responses yet

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *