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

Importantly, that investor viewpoint is not new. It cycles in when conditions are right (and vice versa). It also brings the ineffective warnings of an overpriced market with it.Looking toward a good 2022 stock market, there is no apparent reason to expect these issues to change.

Telegram has exploded as a hub for cybercriminals looking to buy, sell and share stolen data and hacking tools, new research shows, as the messaging app emerges as an alternative to the dark web.An investigation by cyber intelligence group Cyberint, together with the Financial Times, found a ballooning network of hackers sharing data leaks on the popular messaging platform, sometimes in channels with tens of thousands of subscribers, lured by its ease of use and light-touch moderation.Golang from ye


Telegram Golang
FROM USA