Tag Archives: class

#01 – C# – Performance – Sealed Class

Performance #2 : Quando puder vá de classes selada

Saga :: M&M (Mundo Mobile)

As classes marcadas como sealed são as que NÃO precisam ser herdadas. Ou seja, elas removem características das classes e permitem ao .NET FW executar otimizações em tempo de execução.

class X { }
sealed class Y : X { }
class Z : Y { }

Quando marcada com o modificador sealed, ela impede que outras classes herdem a partir desta classe. Resumindo, uma classe sealed não pode ser herdada.

No exemplo, a classe Y herda da classe X, mas ninguém pode herdar da classe Y. Tente declarar a classe Z herdar da classe Y e ganhe um erro em tempo de compilação:

Sealed.Z’: cannot derive from sealed type ‘Sealed.Y

cs_performance_selead_class

Ok! Sobre PERFORMANCE com SEALED CLASS é tudo o que eu tenho a dizer.

#01 – C# – Performance – Dados a membros

Performance #1 : Atribuir dados a membros de uma classe

Saga :: M&M (Mundo Mobile) 

A Saga C# e a performance. Vamos lá:

Pessoa.cs

Aqui temos a definição da classe Pessoa:

namespace AtribuirMembrosClasses
{
    public class Pessoa
    {
        public static string Nome { get; set; }
        public static string Mail;
    }
}

Nada demais, apenas uma classe que possui uma propriedade Nome e um membro Mail, ambos definidos como estáticos.

No Main

Agora só resta utilizar esses membros:

using System;
using System.Diagnostics;

namespace AtribuicaoMembrosClasses
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch st = new Stopwatch();
            st.Start();
            for (int i = 0; i < 400; i++) { Pessoa.Nome = "Aldo"; } st.Stop(); Console.WriteLine("usando Property: -> tempo gasto : " + st.ElapsedTicks);
            st.Restart();
            for (int i = 0; i < 400; i++) { Pessoa.Mail = "C#"; } st.Stop(); Console.WriteLine("Usando Atribuição Direta (Membro) : -> tempo gasto : " + st.ElapsedTicks);
            Console.ReadLine(); 
        }
    }
}

Aqui estou atribuindo valores à classe Pessoa:

  • Usando a propriedade Nome
  • Usando o membro Mail

Agora a pergunta. Qual a forma mais rápida?

Observações

Veja alguns pontos importantes:

Note que atribuir valores via propriedade é bem lento.

cs_performance_dadosmembros

Se preferir utilizar instâncias das classes e não definir os membros da classe como estáticos, usar a propriedade será ainda mais lento.

Ok! Sobre o ATRIBUIR MEMBROS CLASSES é tudo o que eu tenho a dizer.