Telegram Group & Telegram Channel
πŸ‘£ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ выдСлСния памяти Π² Go: ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° строчка Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ»Π° всё Π½Π° 30%

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Dolt (Π°Π½Π°Π»ΠΎΠ³ Git, Π½ΠΎ для SQL-Ρ‚Π°Π±Π»ΠΈΡ†) послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² (types_scan) Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° 30% ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°? Казалось Π±Ρ‹, нСвинная строчка ΠΊΠΎΠ΄Π°.

πŸ“‰ Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ
ΠœΠ΅Ρ‚ΠΎΠ΄ GetBytes() Π½Π°Ρ‡Π°Π» Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ReadBytes() Ρƒ интСрфСйса ValueStore. Всё выглядСло Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Go ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ:
πŸ” runtime.newobject вызывался слишком часто β†’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ Π² ΠΊΡƒΡ‡Π΅.

πŸ“¦ Π“Π΄Π΅ Π·Π°Ρ€Ρ‹Ρ‚Π° собака

func (vs nodeStore) ReadBytes(...) ...

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ использовал ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (vs nodeStore). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вся структура ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° большая.

πŸš‘ Как пофиксили
ΠŸΡ€ΠΎΡΡ‚ΠΎ помСняли Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ:

func (vs *nodeStore) ReadBytes(...) ...

Вуаля β€” Π°Π»Π»ΠΎΠΊΠ΅ΠΉΡˆΠ½Ρ‹ исчСзли, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ.

🧠 Π’Ρ‹Π²ΠΎΠ΄
❗ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ = риск лишнСго копирования ΠΈ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ
πŸ›  Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ малСнький ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΠΊΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄
πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Go β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ pprof!

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Π² Π±Π»ΠΎΠ³Π΅ DoltHub
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Dolt

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/Golang_google/2864
Create:
Last Update:

πŸ‘£ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ выдСлСния памяти Π² Go: ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° строчка Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ»Π° всё Π½Π° 30%

Π’ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Dolt (Π°Π½Π°Π»ΠΎΠ³ Git, Π½ΠΎ для SQL-Ρ‚Π°Π±Π»ΠΈΡ†) послС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ² (types_scan) Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° 30% ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°? Казалось Π±Ρ‹, нСвинная строчка ΠΊΠΎΠ΄Π°.

πŸ“‰ Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ
ΠœΠ΅Ρ‚ΠΎΠ΄ GetBytes() Π½Π°Ρ‡Π°Π» Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ReadBytes() Ρƒ интСрфСйса ValueStore. Всё выглядСло Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Go ΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ:
πŸ” runtime.newobject вызывался слишком часто β†’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ Π² ΠΊΡƒΡ‡Π΅.

πŸ“¦ Π“Π΄Π΅ Π·Π°Ρ€Ρ‹Ρ‚Π° собака


func (vs nodeStore) ReadBytes(...) ...

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ использовал ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (vs nodeStore). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ вся структура ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° большая.

πŸš‘ Как пофиксили
ΠŸΡ€ΠΎΡΡ‚ΠΎ помСняли Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ:

func (vs *nodeStore) ReadBytes(...) ...

Вуаля β€” Π°Π»Π»ΠΎΠΊΠ΅ΠΉΡˆΠ½Ρ‹ исчСзли, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ.

🧠 Π’Ρ‹Π²ΠΎΠ΄
❗ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ = риск лишнСго копирования ΠΈ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ
πŸ›  Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ малСнький ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π·ΠΊΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄
πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Go β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ pprof!

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Π² Π±Π»ΠΎΠ³Π΅ DoltHub
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ Dolt

@golang_google

BY Golang




Share with your friend now:
tg-me.com/Golang_google/2864

View MORE
Open in Telegram


Golang Telegram | DID YOU KNOW?

Date: |

What Is Bitcoin?

Bitcoin is a decentralized digital currency that you can buy, sell and exchange directly, without an intermediary like a bank. Bitcoin’s creator, Satoshi Nakamoto, originally described the need for β€œan electronic payment system based on cryptographic proof instead of trust.” Each and every Bitcoin transaction that’s ever been made exists on a public ledger accessible to everyone, making transactions hard to reverse and difficult to fake. That’s by design: Core to their decentralized nature, Bitcoins aren’t backed by the government or any issuing institution, and there’s nothing to guarantee their value besides the proof baked in the heart of the system. β€œThe reason why it’s worth money is simply because we, as people, decided it has valueβ€”same as gold,” says Anton Mozgovoy, co-founder & CEO of digital financial service company Holyheld.

How Does Bitcoin Mining Work?

Bitcoin mining is the process of adding new transactions to the Bitcoin blockchain. It’s a tough job. People who choose to mine Bitcoin use a process called proof of work, deploying computers in a race to solve mathematical puzzles that verify transactions.To entice miners to keep racing to solve the puzzles and support the overall system, the Bitcoin code rewards miners with new Bitcoins. β€œThis is how new coins are created” and new transactions are added to the blockchain, says Okoro.

Golang from ru


Telegram Golang
FROM USA