GZipStream – Compress/Decompress

O .NET Framework fornece recursos para compressão e descompressão de arquivos.

Dentre estes recursos temos a classe GZipStream, responsável encapsular manipulações em arquivos no formato gzip. O formato gzip é bastante popular e pode ser encontrado em muitas ferramentas de compressão.

th

Saiba mais

Sobre estes anúncios

Busca binária

O objetivo deste post é apresentar um meio eficiente de busca de objetos em memória.

O surgimento da sintaxe LINQ, assim como a utilização de query methods, facilitou a busca em memória. Com estes recursos podemos facilmente executar queries em arrays, coleções e listas de tipos genéricos. O uso deste modelo de sintaxe agiliza o processo de desenvolvimento por tornar a busca em memória trivial e de simples codificação.

Mas, ao adotarmos esse modelo de sintaxe, estamos realmente escrevendo código performático? Será que essas consultas em memória são o modelo mais rápido de pesquisa? Não estaríamos perdemos poder computacional ou tempo de processamento ao adotar estes recursos em determinados cenários de pesquisa em memória?

Dada a necessidade de executar consultas eficientes e com baixo custo computacional, passamos a evitar consultas que consumam muitos recursos computacionais e que sejam lentas.

A busca binária é um algoritmo de busca que segue o paradigma da divisão e conquista. Partindo do pressuposto de que o conjunto de elementos está ordenado, são executadas diversas divisões do espaço de busca restringindo o possível local no qual o elemento buscado está posicionado. A imagem a seguir ilustra o processo de divisão do conjunto de elementos realizado pela busca de elementos.

clip_image002

Saiba mais

Padrão Generation Gap

O padrão Generation Gap surgiu da dificuldade de se manter código gerado automaticamente e código escrito manualmente em um mesmo arquivo.

Em primeiro lugar, precisamos contextualizar quando as duas abordagens tornam-se conflitantes.

A partir do momento que temos uma classe gerada automaticamente por alguma ferramenta (por exemplo: Entity Framework Database First) e precisamos adicionar a ela algum comportamento escrito manualmente (algum método, ou propriedade que não será persistida no banco de dados), corremos o risco de perder tais modificações manuais após qualquer atualização da classe gerada automaticamente. Isto é, qualquer modificação gerada a partir de uma atualização do modelo acarretará na perda de qualquer código escrito manualmente.

Criando um componente SQL CLR para o registro de mensagens no event log do Windows

O Common Language Runtime é o coração do .NET Framework. O SQL Server fornece recursos que permitem a incorporação de componentes CLR ao seu ambiente de execução, desta forma podemos construir stored procedures, triggers, user-defined functions, user-defined types e user-defined aggregates utilizando código gerenciado.

Este post descreve os passos necessários para criação de um componente SQL CLR para o registro de mensagens no event log do Windows a partir da execução de stored procedures.

Saiba mais

Visual Studio Summit 2014 – Profiling de Aplicações .NET

Tive a felicidade de participar pela terceira vez do Visual Studio Summit, evento sobre tecnologias Microsoft.

Nesta última participação palestrei sobre Profiling de Aplicações .NET.

Aqui existe um link para o evento Visual Studio Summit 2014.

Mais detalhes sobre o uso de profiling podem ser encontrados neste link: Profiling de Aplicações .NET

Saiba mais

Profiling de Aplicações .NET

Mesmo com o melhor desempenho e os melhores profissionais, problemas relacionados a performance podem surgir. Fazer com que uma aplicação execute de forma performática pode parecer uma tarefa fácil, mas isso pode se tornar uma arte oculta.

Ferramentas de profiling monitoram a execução de uma aplicação com o objetivo de medir os recursos computacionais (tempo, processamento e memória) gastos por um método por toda a sua execução. Seu objetivo é identificar pontos na aplicação que causem problemas em sua execução.

O profiling de aplicações .NET é mais complexo do que aplicações em código de máquina, pois o .NET faz uso de recursos como Application Domains, Garbage Collection, Exception Handling e Just-in-Time Compilation, recursos que tornam o processo de captura dos métodos em execução mais complexo.

Saiba mais

Processos e threads

Nos anos 80 era comum o fato de uma aplicação conter um único processo que executasse um único fluxo de execução. Aplicativos mais complexos, que continham concorrência entre atividades internas, exigiam uma mudança neste comportamento e foram base para uma revolução no modo como os sistemas operacionais funcionavam.

Nesta época percebeu-se que era preciso aprimorar o funcionamento dos processos para que eles fossem associados a múltiplas atividades concorrentes.

Hoje os processos consistem de um ambiente de execução que gerencia diferentes recursos. Dentre estes recursos encontramos as threads, que correspondem a uma abstração do sistema operacional para uma atividade a ser executada.

Saiba mais

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 70 outros seguidores