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

Telegram Auto-Delete Messages in Any Chat

Some messages aren’t supposed to last forever. There are some Telegram groups and conversations where it’s best if messages are automatically deleted in a day or a week. Here’s how to auto-delete messages in any Telegram chat. You can enable the auto-delete feature on a per-chat basis. It works for both one-on-one conversations and group chats. Previously, you needed to use the Secret Chat feature to automatically delete messages after a set time. At the time of writing, you can choose to automatically delete messages after a day or a week. Telegram starts the timer once they are sent, not after they are read. This won’t affect the messages that were sent before enabling the feature.

Find Channels On Telegram?

Telegram is an aspiring new messaging app that’s taking the world by storm. The app is free, fast, and claims to be one of the safest messengers around. It allows people to connect easily, without any boundaries.You can use channels on Telegram, which are similar to Facebook pages. If you’re wondering how to find channels on Telegram, you’re in the right place. Keep reading and you’ll find out how. Also, you’ll learn more about channels, creating channels yourself, and the difference between private and public Telegram channels.

Golang from pl


Telegram Golang
FROM USA