SlideShare uma empresa Scribd logo
Globalcode – Open4education
Arquitetura .NET
Performance é feature
Antonio Maniero
Microsoft MVP
Globalcode – Open4education
Antonio Maniero
 Engenheiro desde que nasceu, escovador de bits desde o primeiro
computador c/ 2KB de memória e tarado por eficiência e simplicidade
 Desenvolvedor generalista há 35 anos. Especialista em ERP. Sistemas
LOB rodando em dezenas de milhares de empresas de todos os portes
e setores no Brasil e exterior para milhões de usuários corporativos
 Aficionado por linguagens de programação
 Apaixonado por ensinar, compartilhar conhecimento
 MVP sem querer 
pt.stackoverflow.com/users/101/maniero
linkedin.com/in/maniero/
facebook.com/antonio.maniero.junior
twitter@manieromvp jumbo.com.br
Globalcode – Open4education
Manual da palestra
É uma degustação, depois posso oferecer mais
Não quero vender nada para você
Fundamentação é meu foco, mas não cabe aqui
Pensamento fora da caixa, contestação do status quo
Serei assertivo, mas isso não quer dizer que sei tudo
Usarei hipérboles, simplificações e generalizações
Prioridade para performance
Analise seu contexto
Globalcode – Open4education
Estado da nossa indústria
Tudo é para ontem
Eterno MVP
Discurso de modernidade
“Adoção” de tecnologias por marketing
Muita informação, pouca profundidade
Cultura das Dicas Miojo® e das “boas práticas”
Visão de curto prazo
Nova solução para o problema causado pela solução anterior
Globalcode – Open4education
Otimização
“Otimização prematura é a raiz de todo o mal”
Donald Knuth
“Os programadores gastam muito tempo
pensando ou se preocupando com a
velocidade de partes não-críticas de seus
programas, e essas tentativas de eficiência
realmente têm um forte impacto negativo
quando a depuração e a manutenção são
consideradas. Devemos esquecer as
pequenas eficiências, digamos 97% do
tempo: a otimização prematura é a raiz de
todo o mal. No entanto, não devemos deixar
passar nossas oportunidades nessa crítica de
3%”
http://web.archive.org/web/20130731202547/http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
Globalcode – Open4education
Funcionar é diferente de estar
certo
Globalcode – Open4education
Requisitos
Globalcode – Open4education
Casos reais
209,420,973 HTTP requests to our load balancer
66,294,789 of those were page loads
1,240,266,346,053 bytes (1.24 TB) of HTTP traffic sent
569,449,470,023 bytes (569 GB) total received
3,084,303,599,266 bytes (3.08 TB) total sent
504,816,843 SQL Queries (from HTTP requests alone)
5,831,683,114 Redis hits
17,158,874 Elastic searches
3,661,134 Tag Engine requests
607,073,066 ms (168 hours) spent running SQL queries
10,396,073 ms (2.8 hours) spent on Redis hits
147,018,571 ms (40.8 hours) spent on Tag Engine requests
1,609,944,301 ms (447 hours) spent processing in ASP.Net
22.71 ms average (19.12 ms in ASP.Net) for 49,180,275 question page renders
11.80 ms average (8.81 ms in ASP.Net) for 6,370,076 home page renders
Globalcode – Open4education
Casos reais
Globalcode – Open4education
Casos reais
Qual o segredo?
Pragmatismo
Eficiência
Globalcode – Open4education
Casos reais
Por que fazem isto?
Custo
Experiência do usuário (SEO)
Globalcode – Open4education
Reinventando a roda
Globalcode – Open4education
Performance não é ser rápido
Globalcode – Open4education
Linguagens mais rápidas?
Assembly?
C ?
C++ ?
C# ?
Por que não?
Globalcode – Open4education
C# versus C++
Rico Mariani Raymond Chen
https://blogs.msdn.microsoft.com/ricom/ https://blogs.msdn.microsoft.com/oldnewthing/
09 de maio de 2005
Chinese/English dictionary
https://blogs.msdn.microsoft.com/ricom/2005/05/10/performance-quiz-6-chineseenglish-dictionary-reader/
Globalcode – Open4education
C# versus C++
Uma tradução linha-a-linha do código C++ original em C# foi executada
10 vezes mais rápido que o código C++
Foram necessárias cinco otimizações diferentes (uma delas introduziu
um bug) para que o código C++ correspondesse à velocidade do
código C# inalterado
Após a sexta otimização de Raymond, seu código C++ finalmente
venceu o código C# - porque o tempo de execução foi reduzido para
onde a sobrecarga de inicialização de 60ms do CLR fez a diferença!
Para conseguir isso, Raymond teve que escrever seu próprio:
Sistema de arquivo/io
Alocador
Mapeamento internacional
Globalcode – Open4education
C# versus C++
C# no seu início, que sequer tinha generics
Tão pouco todas as melhorias que vieram depois para melhorar a
performance
E claro, as que estão por vir (lições aprendidas no Midori/M#)
Sem as melhorias do CLR promovidas ao longo de mais de uma
década
GC e JITter na sua infância
Sem contar com os avanços que a comunidade “commitou” no CoreRT
Desconsiderando o ganho que pode ser obtido com o .NET Native
Globalcode – Open4education
Ferramenta certa
Globalcode – Open4education
Ferramenta certa
Globalcode – Open4education
Ferramenta certa
Globalcode – Open4education
Memória é barata?
8MB ~ US$ 350
Globalcode – Open4education
Memória é barata?
Meio Tamanho típico Tempo de acesso
Virtual Memory 1GB – 16GB 50 – 100 us
Physical Memory 2GB – 1TB 60 – 150 ns
3nd-Level Cache 2MB – 16MB 25 – 40 ns
2nd-Level Cache 128KB – 2MB 6 – 12 ns
1st-Level Cache 16KB – 128KB 1 – 3 ns
Registers 16 – 64 Words 0.2 – 0.5 ns
Globalcode – Open4education
Escolha seu veneno
Object
Dynamic
Cast
Síncrono
Async
Thread
Yield
Lock
Alocação desmedida
Memory leak
Eager/Lazy
Generics
Não
Pattern Matching
Async
Síncrono
Execução serial
Iterador manual
Imutável
Economia
Memory aware
Lazy/Eager
Globalcode – Open4education
Escolha seu veneno
No cache
Heap
Criando objetos
GC padrão
Inlining
JITter
checked
Verifica argumentos
Exceção
ICollection
Multi dimension
Cache
Stack
Memory Pool
GC adequado
[AgressiveInlining]
Ngen
unchecked
Contratos
Retorne erro
Array
Jagged Array
Globalcode – Open4education
Escolha seu veneno
Linked List
Dictionary/Array
O(**)
Build Strings
String
Anonynous type
Nullable
Array
double
Regex
Serialização
Generics
SortedDict/KeyedColl
O(1)
StringBuilder
MyString
Tuplas
Non-Nullable (8.0)
SIMD
decimal
Análise manual
Acesso direto
Globalcode – Open4education
Escolha seu veneno
for
LINQ
.ToList()
if
Debug
Scan coleções
Add()
new List()
IO ingênuo
/
Passar parâmetros
foreach
foreach
Último momento
switch
Release
Span<>/Pointer
AddRange()
New List(10_000_000)
4KB
>>
Passar objeto
Globalcode – Open4education
Escolha seu veneno
32 bits
64 bits
Assemblies
Regras .NET
Entity Framework
EF Core
Dapper
DB poderoso
ACID/CAP
ASP.NET
ASP.NET MVC
64 bits
32 bits
Assembly único
Minhas regras
EF Core
Dapper
Sem ORM
DB leve
CAP/ACID
ASP.NET MVC
ASP.NET Core
Globalcode – Open4education
Escolha seu veneno
ASP.NET Core
.NET Full
.NET Core
ASP.NET MVC
IIS
Microsserviços
SOAP
RESTy
TCP
VS Community/Pro
Otimização
Manual?!?!? Nancy?!?
.NET Core
.NET Native
WebAPI/Blazor
Nativo (OWIN)
Monolítico
RESTy
TCP/UDP
IPC (Pipes/MMap)
VS Enterprise
Perfilamento
Globalcode – Open4education
Escolha seu veneno
OOP
Abstração
Encapsulamento
virtual
class
Cópia
Boxing
Reflexão
Runtime
Patterns
Domain Drive Dev.
Composição
Mecanismo concreto
Acesso direto
Non-virtual/static
[ref] struct
Referência
-----------
Gerador de Código
Compile Time
Library/Scaffolding
Data Driven Develop.
Globalcode – Open4education
Profilers
Globalcode – Open4education
Entenda o que está fazendo
Antonio Maniero
“Enquanto você não souber o que cada
caractere do seu código faz, até mesmo o
espaço em branco, você ainda não sabe
programar”
Globalcode – Open4education
Sugestões
Globalcode – Open4education
Ainda não acabou!
Não acredite em tudo que chega até você
Incluindo esta palestra
Questione tudo! Mas não entre em paranoia 
Procure visões diferentes
Uma “mentira” repetida mil vezes não a faz verdadeira
Só porque deu certo para alguém não significa que serve
para você
Atenção ao contexto!
Globalcode – Open4education
Contexto
Contexto
Contexto
Globalcode – Open4education
Não encerramos aqui
Me procurem, me sigam, me adicionem,
perguntem, interajam, façam networking
Gostaram? Querem mais?
Me convidem para seus eventos
Peçam uma palestra minha no seu evento preferido
Obrigado
pt.stackoverflow.com/users/101/maniero
linkedin.com/in/maniero/
twitter@manieromvp
pt.quora.com/profile/Antonio-Maniero
facebook.com/antonio.maniero.junior
github/.com/maniero
instagram.com/antoniomaniero
https://www.youtube.com/channel/UC5YAwQ1c11r_XPEnPw5B1dg
Antonio Maniero
TDC2018SP | Trilha Arq .Net - Performance e feature

Mais conteúdo relacionado

Mais procurados

Bdd&tdd
Bdd&tddBdd&tdd
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Thiago Ferreira
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
Leandro Parazito
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018
Ernesto Barbosa
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripa
Ernesto Barbosa
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
Daniel Archer Marques Cramer
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
Ruben Marcus Luz Paschoarelli
 
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
tdc-globalcode
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
Rodrigo Branas
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
Rodrigo Serradura
 
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
Taise Dias da Silva
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
Camilo Lopes
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
FilipiAtaideArruda
 
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
Pedro Moreira da Silva
 
Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...
Vinícius Krolow
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
Daniel Archer Marques Cramer
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
Henrique Gogó
 
Incluindo Ferramentas de Segurança no Pipeline
Incluindo Ferramentas de Segurança no PipelineIncluindo Ferramentas de Segurança no Pipeline
Incluindo Ferramentas de Segurança no Pipeline
Claudio Romao
 

Mais procurados (19)

Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimentoDevops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018Gestão da Automação TDC Floripa 2018
Gestão da Automação TDC Floripa 2018
 
Service virtualization floripa
Service virtualization floripaService virtualization floripa
Service virtualization floripa
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTheDevConf 2016 - Análise efetiva de microservices em 3 passos
TheDevConf 2016 - Análise efetiva de microservices em 3 passos
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
GitLab Pajamas Design System (2022-01-20 @ “Design systems tratados por tu” p...
 
Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...Machucando o código - Técnicas para escrever um código com uma maior legibil...
Machucando o código - Técnicas para escrever um código com uma maior legibil...
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Incluindo Ferramentas de Segurança no Pipeline
Incluindo Ferramentas de Segurança no PipelineIncluindo Ferramentas de Segurança no Pipeline
Incluindo Ferramentas de Segurança no Pipeline
 

Semelhante a TDC2018SP | Trilha Arq .Net - Performance e feature

TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
tdc-globalcode
 
Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17
Leandro Moreira
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
tdc-globalcode
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Jonathan Prates
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
Flávio Lisboa
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
Carlos Wagner Costa
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
Stefan Teixeira
 
Resumo do TheDeveloperConference 2014 - POA
Resumo do TheDeveloperConference 2014 - POAResumo do TheDeveloperConference 2014 - POA
Resumo do TheDeveloperConference 2014 - POA
Rafael Pacheco
 
Monitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsMonitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application Insights
Renato Groff
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
Ismael
 
Novidades do C#6
Novidades do C#6 Novidades do C#6
Novidades do C#6
Vinicius Mussak
 
Novidades do c#6
Novidades do c#6Novidades do c#6
Novidades do c#6
Vinicius Mussak
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
Rafael Chaves
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
Bruno Tanoue
 
Revolução Go TDC 2016
Revolução Go TDC 2016Revolução Go TDC 2016
Revolução Go TDC 2016
Tomas Cretella Foglio
 
Introducao XP
Introducao XPIntroducao XP
Introducao XP
Fabio Ferrari
 
The Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto AlegreThe Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto Alegre
Bruno Brandes
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
Comunidade NetPonto
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
José Roberto Araújo
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
Laís Lima
 

Semelhante a TDC2018SP | Trilha Arq .Net - Performance e feature (20)

TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
 
Resumo do TheDeveloperConference 2014 - POA
Resumo do TheDeveloperConference 2014 - POAResumo do TheDeveloperConference 2014 - POA
Resumo do TheDeveloperConference 2014 - POA
 
Monitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsMonitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application Insights
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
 
Novidades do C#6
Novidades do C#6 Novidades do C#6
Novidades do C#6
 
Novidades do c#6
Novidades do c#6Novidades do c#6
Novidades do c#6
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Revolução Go TDC 2016
Revolução Go TDC 2016Revolução Go TDC 2016
Revolução Go TDC 2016
 
Introducao XP
Introducao XPIntroducao XP
Introducao XP
 
The Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto AlegreThe Developers Conference 2014 | Porto Alegre
The Developers Conference 2014 | Porto Alegre
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
tdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
tdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
tdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
tdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
tdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
tdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
tdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
tdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
tdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
tdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
tdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
tdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
tdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

Atividade letra da música - Espalhe Amor, Anavitória.
Atividade letra da música - Espalhe  Amor, Anavitória.Atividade letra da música - Espalhe  Amor, Anavitória.
Atividade letra da música - Espalhe Amor, Anavitória.
Mary Alvarenga
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
MateusTavares54
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
WelberMerlinCardoso
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
LILIANPRESTESSCUDELE
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
cmeioctaciliabetesch
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
edivirgesribeiro1
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
profesfrancleite
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
LeticiaRochaCupaiol
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
fernandacosta37763
 
Introdução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escolaIntrodução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escola
Professor Belinaso
 
Aula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sonsAula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sons
Érika Rufo
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
Manuais Formação
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
TomasSousa7
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
DECIOMAURINARAMOS
 
slides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentarslides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentar
JoeteCarvalho
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
Eró Cunha
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
lveiga112
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Biblioteca UCS
 

Último (20)

Atividade letra da música - Espalhe Amor, Anavitória.
Atividade letra da música - Espalhe  Amor, Anavitória.Atividade letra da música - Espalhe  Amor, Anavitória.
Atividade letra da música - Espalhe Amor, Anavitória.
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
 
Aula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptxAula 2 - Revisando o significado de fração - Parte 2.pptx
Aula 2 - Revisando o significado de fração - Parte 2.pptx
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
 
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptxAula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
Aula história , caracteristicas e esteriótipos em relação a DANÇA DE SALAO.pptx
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
 
Atividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º anoAtividade de reforço de matemática 2º ano
Atividade de reforço de matemática 2º ano
 
Introdução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escolaIntrodução à Sociologia: caça-palavras na escola
Introdução à Sociologia: caça-palavras na escola
 
Aula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sonsAula 1 do livro de Ciências do aluno - sons
Aula 1 do livro de Ciências do aluno - sons
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
 
Redação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptxRedação e Leitura_7º ano_58_Produção de cordel .pptx
Redação e Leitura_7º ano_58_Produção de cordel .pptx
 
slides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentarslides de Didática 2.pdf para apresentar
slides de Didática 2.pdf para apresentar
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
 
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...
 

TDC2018SP | Trilha Arq .Net - Performance e feature

  • 1. Globalcode – Open4education Arquitetura .NET Performance é feature Antonio Maniero Microsoft MVP
  • 2. Globalcode – Open4education Antonio Maniero  Engenheiro desde que nasceu, escovador de bits desde o primeiro computador c/ 2KB de memória e tarado por eficiência e simplicidade  Desenvolvedor generalista há 35 anos. Especialista em ERP. Sistemas LOB rodando em dezenas de milhares de empresas de todos os portes e setores no Brasil e exterior para milhões de usuários corporativos  Aficionado por linguagens de programação  Apaixonado por ensinar, compartilhar conhecimento  MVP sem querer  pt.stackoverflow.com/users/101/maniero linkedin.com/in/maniero/ facebook.com/antonio.maniero.junior twitter@manieromvp jumbo.com.br
  • 3. Globalcode – Open4education Manual da palestra É uma degustação, depois posso oferecer mais Não quero vender nada para você Fundamentação é meu foco, mas não cabe aqui Pensamento fora da caixa, contestação do status quo Serei assertivo, mas isso não quer dizer que sei tudo Usarei hipérboles, simplificações e generalizações Prioridade para performance Analise seu contexto
  • 4. Globalcode – Open4education Estado da nossa indústria Tudo é para ontem Eterno MVP Discurso de modernidade “Adoção” de tecnologias por marketing Muita informação, pouca profundidade Cultura das Dicas Miojo® e das “boas práticas” Visão de curto prazo Nova solução para o problema causado pela solução anterior
  • 5. Globalcode – Open4education Otimização “Otimização prematura é a raiz de todo o mal” Donald Knuth “Os programadores gastam muito tempo pensando ou se preocupando com a velocidade de partes não-críticas de seus programas, e essas tentativas de eficiência realmente têm um forte impacto negativo quando a depuração e a manutenção são consideradas. Devemos esquecer as pequenas eficiências, digamos 97% do tempo: a otimização prematura é a raiz de todo o mal. No entanto, não devemos deixar passar nossas oportunidades nessa crítica de 3%” http://web.archive.org/web/20130731202547/http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
  • 6. Globalcode – Open4education Funcionar é diferente de estar certo
  • 8. Globalcode – Open4education Casos reais 209,420,973 HTTP requests to our load balancer 66,294,789 of those were page loads 1,240,266,346,053 bytes (1.24 TB) of HTTP traffic sent 569,449,470,023 bytes (569 GB) total received 3,084,303,599,266 bytes (3.08 TB) total sent 504,816,843 SQL Queries (from HTTP requests alone) 5,831,683,114 Redis hits 17,158,874 Elastic searches 3,661,134 Tag Engine requests 607,073,066 ms (168 hours) spent running SQL queries 10,396,073 ms (2.8 hours) spent on Redis hits 147,018,571 ms (40.8 hours) spent on Tag Engine requests 1,609,944,301 ms (447 hours) spent processing in ASP.Net 22.71 ms average (19.12 ms in ASP.Net) for 49,180,275 question page renders 11.80 ms average (8.81 ms in ASP.Net) for 6,370,076 home page renders
  • 10. Globalcode – Open4education Casos reais Qual o segredo? Pragmatismo Eficiência
  • 11. Globalcode – Open4education Casos reais Por que fazem isto? Custo Experiência do usuário (SEO)
  • 14. Globalcode – Open4education Linguagens mais rápidas? Assembly? C ? C++ ? C# ? Por que não?
  • 15. Globalcode – Open4education C# versus C++ Rico Mariani Raymond Chen https://blogs.msdn.microsoft.com/ricom/ https://blogs.msdn.microsoft.com/oldnewthing/ 09 de maio de 2005 Chinese/English dictionary https://blogs.msdn.microsoft.com/ricom/2005/05/10/performance-quiz-6-chineseenglish-dictionary-reader/
  • 16. Globalcode – Open4education C# versus C++ Uma tradução linha-a-linha do código C++ original em C# foi executada 10 vezes mais rápido que o código C++ Foram necessárias cinco otimizações diferentes (uma delas introduziu um bug) para que o código C++ correspondesse à velocidade do código C# inalterado Após a sexta otimização de Raymond, seu código C++ finalmente venceu o código C# - porque o tempo de execução foi reduzido para onde a sobrecarga de inicialização de 60ms do CLR fez a diferença! Para conseguir isso, Raymond teve que escrever seu próprio: Sistema de arquivo/io Alocador Mapeamento internacional
  • 17. Globalcode – Open4education C# versus C++ C# no seu início, que sequer tinha generics Tão pouco todas as melhorias que vieram depois para melhorar a performance E claro, as que estão por vir (lições aprendidas no Midori/M#) Sem as melhorias do CLR promovidas ao longo de mais de uma década GC e JITter na sua infância Sem contar com os avanços que a comunidade “commitou” no CoreRT Desconsiderando o ganho que pode ser obtido com o .NET Native
  • 21. Globalcode – Open4education Memória é barata? 8MB ~ US$ 350
  • 22. Globalcode – Open4education Memória é barata? Meio Tamanho típico Tempo de acesso Virtual Memory 1GB – 16GB 50 – 100 us Physical Memory 2GB – 1TB 60 – 150 ns 3nd-Level Cache 2MB – 16MB 25 – 40 ns 2nd-Level Cache 128KB – 2MB 6 – 12 ns 1st-Level Cache 16KB – 128KB 1 – 3 ns Registers 16 – 64 Words 0.2 – 0.5 ns
  • 23. Globalcode – Open4education Escolha seu veneno Object Dynamic Cast Síncrono Async Thread Yield Lock Alocação desmedida Memory leak Eager/Lazy Generics Não Pattern Matching Async Síncrono Execução serial Iterador manual Imutável Economia Memory aware Lazy/Eager
  • 24. Globalcode – Open4education Escolha seu veneno No cache Heap Criando objetos GC padrão Inlining JITter checked Verifica argumentos Exceção ICollection Multi dimension Cache Stack Memory Pool GC adequado [AgressiveInlining] Ngen unchecked Contratos Retorne erro Array Jagged Array
  • 25. Globalcode – Open4education Escolha seu veneno Linked List Dictionary/Array O(**) Build Strings String Anonynous type Nullable Array double Regex Serialização Generics SortedDict/KeyedColl O(1) StringBuilder MyString Tuplas Non-Nullable (8.0) SIMD decimal Análise manual Acesso direto
  • 26. Globalcode – Open4education Escolha seu veneno for LINQ .ToList() if Debug Scan coleções Add() new List() IO ingênuo / Passar parâmetros foreach foreach Último momento switch Release Span<>/Pointer AddRange() New List(10_000_000) 4KB >> Passar objeto
  • 27. Globalcode – Open4education Escolha seu veneno 32 bits 64 bits Assemblies Regras .NET Entity Framework EF Core Dapper DB poderoso ACID/CAP ASP.NET ASP.NET MVC 64 bits 32 bits Assembly único Minhas regras EF Core Dapper Sem ORM DB leve CAP/ACID ASP.NET MVC ASP.NET Core
  • 28. Globalcode – Open4education Escolha seu veneno ASP.NET Core .NET Full .NET Core ASP.NET MVC IIS Microsserviços SOAP RESTy TCP VS Community/Pro Otimização Manual?!?!? Nancy?!? .NET Core .NET Native WebAPI/Blazor Nativo (OWIN) Monolítico RESTy TCP/UDP IPC (Pipes/MMap) VS Enterprise Perfilamento
  • 29. Globalcode – Open4education Escolha seu veneno OOP Abstração Encapsulamento virtual class Cópia Boxing Reflexão Runtime Patterns Domain Drive Dev. Composição Mecanismo concreto Acesso direto Non-virtual/static [ref] struct Referência ----------- Gerador de Código Compile Time Library/Scaffolding Data Driven Develop.
  • 31. Globalcode – Open4education Entenda o que está fazendo Antonio Maniero “Enquanto você não souber o que cada caractere do seu código faz, até mesmo o espaço em branco, você ainda não sabe programar”
  • 33. Globalcode – Open4education Ainda não acabou! Não acredite em tudo que chega até você Incluindo esta palestra Questione tudo! Mas não entre em paranoia  Procure visões diferentes Uma “mentira” repetida mil vezes não a faz verdadeira Só porque deu certo para alguém não significa que serve para você Atenção ao contexto!
  • 35. Globalcode – Open4education Não encerramos aqui Me procurem, me sigam, me adicionem, perguntem, interajam, façam networking Gostaram? Querem mais? Me convidem para seus eventos Peçam uma palestra minha no seu evento preferido Obrigado