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: |

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.

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Golang from hk


Telegram Golang
FROM USA