Nesse post trato de um algoritmo extremamente famoso: O algoritmo de Dijkstra. NOTA: Este post foi publicado, originalmente, em 2016. O que é? Citando a wikipedia: O algoritmo de Dijkstra, concebido pelo cientista da computação holandês Edsger Dijkstra em 1956 e publicado em 1959, soluciona o problema do caminho mais curto num grafo dirigido ou […]
Palestra “Microsserviços – Lições aprendidas no campo de batalha”
Em 2018, apresentamos na APIX (evento organizado pela Sensedia), uma palestra sobre lições aprendidas em projetos com microsserviços. Recentemente, soubemos que esta foi a palestra mais bem avaliada no evento. Comentários? Feedback?
Palestra “Modelagem de Microsserviços a partir de Processos de Negócio”
Que estratégia seguir para decompor um monolito em microsserviços? Nossa recomendação é se basear nos processos de negócio que serão suportados. O vídeo a seguir contem uma explicação detalhada da abordagem que indicamos. Gostou? Deixe o seu feedback. Precisa de ajuda? Entre em contato.
Parsing large files
Parsing large files is a recurring and challenging task. Right? It is too easy to write slow code that consumes a lot of memory. As an example, let’s consider the following CSV file sample (the size of the real one is ~500MB) userId,movieId,rating,timestamp 1,2,3.5,1112486027 1,29,3.5,1112484676 1,32,3.5,1112484819 1,47,3.5,1112484727 1,50,3.5,1112484580 1,112,3.5,1094785740 1,151,4.0,1094785734 1,223,4.0,1112485573 1,253,4.0,1112484940 Let’s assume that […]
Limpando Strings
Limpar strings é uma tarefa comum em nossas aplicações. Entretanto, .NET torna fácil cometer erros de implementação que levam a alocações em demasia e, consequentemente, a muitas ocorrências de garbage collection. Este post mostra como aliviar essa pressão. Começaremos utilizando o mesmo mecanismo de comparação que utilizamos no post anterior. Ponto de partida Mais uma […]
Validação de CPF
Esta publicação está disponível em vídeo, ampliada e revisada, no canal da EximiaCo. Uma das causas mais comuns para problemas de performance em .NET é o descuido com o Garbage Collector. Mesmo funções simples, se implementadas de forma descuidada, podem ocasionar boas dores de cabeça. Neste post, compartilha a análise e otimização de uma simples […]
Boxing e Unboxing (com exemplos em C#)
Nesse terceiro post sobre conceitos fundamentais para performance, iremos tratar de Boxing e Unboxing. Há outros dois posts, dessa série, um falando sobre a stack e outro sobre a heap, que mostram conceitos fundamentais para que você possa entender do que estaremos tratando aqui. Caso ainda não lido esses posts, ou ainda não esteja seguro […]
Let’s have fun with prime numbers, threads, thread pool, TPL and CUDA?
Let’s have fun with prime numbers? In this post, I would like to share some results I got from using multi-threading with .NET and CUDA to find prime numbers in a range. My machine: Intel Core i7-7700HQ CPU @ 2.80GHz 32 GB RAM Windows 10 Pro NVIDIA GeForce GTX 1070 It is important to say […]
Implementing parallel reduction in CUDA
Reduction operations are those that reduce a collection of values to a single value. In this post, I will share how to implement parallel reduction operations using CUDA. Sequential Sum Compute the sum of all elements of an array is an excellent example of the reduction operation. The sum of an array whose values are […]
Understanding the basics of CUDA thread hierarchies
In this post, I would like to explain a basic but confusing concept of CUDA programming: Thread Hierarchies. It will not be an exhaustive reference. We will not cover all aspects, but it could be a nice first step. If you are starting with CUDA and want to know how to setup your environment, using […]