28
Desempenho poliglota Melhoria de performance independente de linguagem ou plataforma Fabio Galuppo, M.Sc. http://fabiogaluppo.com e http://simplycpp.com/ [email protected] Engenheiro de Software BM&FBovespa http://www.bmfbovespa.com.br Microsoft MVP Visual C++ http://bit.ly/desempenho_poliglota

Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Embed Size (px)

Citation preview

Page 1: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Desempenho poliglota Melhoria de performance independente de

linguagem ou plataforma

Fabio Galuppo, M.Sc. http://fabiogaluppo.com e http://simplycpp.com/

[email protected]

Engenheiro de Software BM&FBovespa

http://www.bmfbovespa.com.br

Microsoft MVP Visual C++

http://bit.ly/desempenho_poliglota

Page 2: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Fabio Razzo Galuppo, M.Sc. Novembro 1973

• Mestrado em Engenharia Elétrica (Universidade Presbiteriana Mackenzie)

– Ciência da Computação - Inteligência Artificial

• Por mais de 10 anos premiado com Microsoft MVP em Visual C++

• Engenheiro de Software (Programador)

• Matemática Aplicada

• Linguagens de programação prediletas: – C++

– F#

– Haskell

• Rock’n’Roll – E boa música em geral

• http://fabiogaluppo.com

• https://github.com/fabiogaluppo

• http://simplycpp.com

Page 3: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 4: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

𝑁 = 8 → 𝐶𝑜𝑛𝑡𝑎𝑔𝑒𝑚 = 8

𝑁 = 8 → 𝐶𝑜𝑛𝑡𝑎𝑔𝑒𝑚 = 3

3 = 𝑙𝑜𝑔28

Page 5: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

lg 𝑁

𝑁

Imperativo

Page 6: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

𝑁2

𝑁3

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 7: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

2 𝑁 + 𝑙𝑔 𝑁 − 1

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

4 𝑁3

Page 8: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Funcional

𝑁

𝑁2

𝑂(𝑁 lg 𝑁) ~1.2 𝑁 lg 𝑁

Page 9: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Composição

𝑂(𝑁) ~2 𝑁

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 10: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

‘Big-Oh’ (O) Omega (Ω) Theta (Θ)

• Upper bound – ‘Big-Oh’ (O) – análogo a ≤

𝑔 𝑁 = 𝑂 𝑓 𝑛 𝑞𝑢𝑎𝑛𝑑𝑜 𝑎 𝑝𝑟𝑜𝑝𝑜𝑟çã𝑜 𝑔 𝑛

𝑓 𝑛é 𝑑𝑒𝑙𝑖𝑚𝑖𝑡𝑎𝑑𝑎 𝑝𝑜𝑟 𝑐𝑖𝑚𝑎 𝑞𝑢𝑎𝑛𝑑𝑜 𝑁 𝑡𝑒𝑛𝑑𝑒 𝑎𝑜 𝑖𝑛𝑓𝑖𝑛𝑖𝑡𝑜

• Lower bound – Omega (Ω) – análogo a ≥

𝑔 𝑁 = Ω 𝑓 𝑛 𝑞𝑢𝑎𝑛𝑑𝑜 𝑎 𝑝𝑟𝑜𝑝𝑜𝑟çã𝑜 𝑔 𝑛

𝑓 𝑛é 𝑑𝑒𝑙𝑖𝑚𝑖𝑡𝑎𝑑𝑎 𝑝𝑜𝑟 𝑏𝑎𝑖𝑥𝑜 𝑞𝑢𝑎𝑛𝑑𝑜 𝑁 𝑡𝑒𝑛𝑑𝑒 𝑎𝑜 𝑖𝑛𝑓𝑖𝑛𝑖𝑡𝑜

• Theta (Θ) – análogo a = 𝑔 𝑁 = Θ 𝑓 𝑛 𝑞𝑢𝑎𝑛𝑑𝑜 𝑓𝑜𝑟 𝑔 𝑁 = 𝑂 𝑓 𝑛 𝑒 𝑔 𝑁 = Ω 𝑓 𝑛

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

O

Ω

Θ

Worst case • Strong guarantees, maybe unrealistic data

Average case • “Typical” input data

Page 11: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

‘Big-Oh’ (O) Omega (Ω) Theta (Θ)

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

𝑓1 𝑁 = 𝑁2 𝑓2 𝑁 = 3𝑁 + 10 𝑓3 𝑁 = 𝑁 + 2

𝑓2 𝑁 = 𝑂 𝑓3 𝑁 ∧ 𝑓2 𝑁 = 𝑂 𝑓3 𝑁 ⇒ 𝑓2 𝑁 = Θ 𝑓3 𝑁

𝑓2 𝑁 = 𝑂 𝑓1 𝑁

relação antisimétrica

𝑓1 𝑁 = Ω 𝑓3 𝑁

Page 12: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Dominância

• 𝐸𝑥𝑝𝑜𝑛𝑒𝑐𝑖𝑎𝑙 𝑑𝑜𝑚𝑖𝑛𝑎 𝑃𝑜𝑙𝑖𝑛𝑜𝑚𝑖𝑎𝑙

• 𝑁𝑎 𝑑𝑜𝑚𝑖𝑛𝑎 𝑁𝑏 𝑞𝑢𝑎𝑛𝑑𝑜 𝑎 > 𝑏

• 𝑃𝑜𝑙𝑖𝑛𝑜𝑚𝑖𝑎𝑙 𝑑𝑜𝑚𝑖𝑛𝑎 𝐿𝑜𝑔𝑎𝑟𝑖𝑡𝑚𝑜

𝑙𝑔 𝑁 < 𝑁 < 𝑙𝑔2𝑁 < 𝑁 < 𝑁 𝑙𝑔 𝑁 < 𝑁2 < 2𝑁 < 𝑁! < 2𝑁2

< 22𝑁< 𝑁2𝑁

regras de senso comun

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 13: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Função e Função Inversa 𝒇 𝒇−𝟏

lg 𝑁 2𝑁

𝑁 𝑁2

𝑁 1

𝑁

𝑁 lg 𝑁 2𝑁

𝑁

𝑁2 𝑁

𝑁3 𝑁3

2𝑁 lg 𝑁

𝑁! 𝑁!−1 “!−𝟏” deve ser uma aproximação

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

𝑓 ∘ 𝑓−1 = 𝑖𝑑 (lg ∘ 2𝑥)(𝑁) = 𝑁

Page 14: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

“!−1” Inversa do Fatorial

Γ−1

Γ N = (N − 1)! Γ N + 1 = N!

Approximated Inverse Gamma

http://fssnip.net/rw

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 15: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

CLRS Problem 1.1 • http://answers-by-me.blogspot.com.br/2010/07/clrs-2e-problem-1-1.html

“I couldn't find how to achieve the value for n lg(n) for 1 second.”

“Sorry, I'm not good at this type of math. I asked the computer. Wolfram Alpha is really good at this stuff.”

lg 𝑁 = 106 𝑁 = 2106

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

lg 𝑁 = 106 ∗ 60 𝑁 = 26∗107

• 1 segundo

• 1 minuto

𝑁! = 106 𝑁 = 106!−1

• 1 segundo

𝑓 𝑛 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦

𝑥 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠

𝑠𝑒𝑐𝑜𝑛𝑑

= 𝑡 𝑛 𝑠𝑒𝑐𝑜𝑛𝑑(𝑠) Equação do Problema

Page 16: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Alguma observação?

lg 𝑁

1

2

4 1 ∗ 2 ∗ 2 ∗ 2 = 23

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 17: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Know Thy Complexities!

• http://bigocheatsheet.com/

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 18: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Know Thy Machine!

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 19: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Medindo o tempo de execução

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

stop_watch sw; … auto us = sw.elapsed_us().count(); sw.restart(); … auto ms = sw.elapsed_ms().count();

Page 20: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Análise Empírica

• Medir o tempo de execução com variações no tamanho de entrada (N)

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 21: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

“Framework” para Análise Empírica

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

https://github.com/fabiogaluppo/samples/tree/master/fragments/Measure

Preparar

Executar

Coletar

Page 22: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Análise dos dados

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Standard plot: T(N) x N Log-log plot: : log(T(N)) x log(N)

Page 23: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Tempo de execução estimado

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

𝐿𝑒𝑖 𝑑𝑎 𝑃𝑜𝑡ê𝑛𝑐𝑖𝑎: 𝑎𝑁𝑏

Page 24: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Wrapping up

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 25: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Considerações sobre medição

• Medir com precisão é um grande desafio

• Efeitos independentes do sistema – Algoritmo e sua complexidade – Quantidade de dados (N) – Influência o expoente e a constante na lei da potência

• Efeitos dependentes do sistema – Hardware

• CPU, Memória, Cache, …

– Software • Compilador, Máquina virtual, GC, … • Sistema operacional, Rede, …

– Influência a constante na lei da potência

𝐿𝑒𝑖 𝑑𝑎 𝑃𝑜𝑡ê𝑛𝑐𝑖𝑎: 𝑎𝑁𝑏

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Ref.: http://algs4.cs.princeton.edu/14analysis/

Page 26: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Medindo código gerenciado

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

Page 27: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Medindo tarefas em paralelo

Fab

io G

alu

pp

o -

htt

p:/

/mem

ber

.acm

.org

/~fa

bio

galu

pp

o -

fab

ioga

lup

po

@ac

m.o

rg

time_point

time_line_segment_1D

Page 28: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade

Desempenho poliglota Melhoria de performance independente de

linguagem ou plataforma

Fabio Galuppo, M.Sc. http://fabiogaluppo.com e http://simplycpp.com/

[email protected]

Engenheiro de Software BM&FBovespa

http://www.bmfbovespa.com.br

Microsoft MVP Visual C++

http://bit.ly/desempenho_poliglota