ArangoDB – Persistência Poliglota e Banco de Dados Multi-Modelos
Desempenho poliglota Melhoria de performance independente...
Transcript of Desempenho poliglota Melhoria de performance independente...
![Page 1: Desempenho poliglota Melhoria de performance independente ...qconrio.com/.../files/presentation-slides/desempenho_poliglota.pdf · • Mestrado em Engenharia Elétrica (Universidade](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/1.jpg)
Desempenho poliglota Melhoria de performance independente de
linguagem ou plataforma
Fabio Galuppo, M.Sc. http://fabiogaluppo.com e http://simplycpp.com/
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/3.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/6.jpg)
𝑁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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/7.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/9.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/10.jpg)
‘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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/11.jpg)
‘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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/12.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/13.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/14.jpg)
“!−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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/17.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/18.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/19.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/20.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/21.jpg)
“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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/22.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/23.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/24.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/25.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/26.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/27.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022052919/5be3eaec09d3f219598c0956/html5/thumbnails/28.jpg)
Desempenho poliglota Melhoria de performance independente de
linguagem ou plataforma
Fabio Galuppo, M.Sc. http://fabiogaluppo.com e http://simplycpp.com/
Engenheiro de Software BM&FBovespa
http://www.bmfbovespa.com.br
Microsoft MVP Visual C++
http://bit.ly/desempenho_poliglota