Π ΡΡΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΡΠΎΠΊΡΡΠΎΠΌ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 70ΠΠ± ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΉΠ»Π° data_large.txt Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ°ΡΡ Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΡΠΌ. Π’Π°ΠΌ Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ΅ΠΉ - ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
- Π΄Π°Π»ΡΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΏΡΠΎΡΠ»Π° ΡΠ΅ΡΡΡ
- ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ Π΅ΡΡ ΡΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ
Π²
case-study - ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π·Π°ΠΌΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ; ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π»ΠΈ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ?
ΠΠ· Π±ΡΠ΄ΠΆΠ΅ΡΠ° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π½ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ.
ΠΠ½Π°ΡΠΈΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΡΠΌΡΡΠ»ΠΈΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π² "ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΌ" ΡΡΠΈΠ»Π΅ - ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΡΠΎΠΊΡ Π·Π° ΡΡΡΠΎΠΊΠΎΠΉ ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π½Π° Ρ ΠΎΠ΄Ρ ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΉΠ» Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Ρ ΡΡΠ°Π»ΠΎΠ½ΠΎΠΌ ΠΊΠ°ΠΊ json-ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π½Π΅ ΡΡΡΠΎΠΊΠ°. ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π½Π΅ Π²Π°ΠΆΠ΅Π½.
ΠΠΎΠΆΠ΅ΠΌ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΡΠ·Π΅ΡΠ° Π²ΡΠ΅Π³Π΄Π° ΠΈΠ΄ΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΌ ΠΊΡΡΠΊΠΎΠΌ. ΠΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ΄ΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΡΡΠΈΠΉ ΡΠ·Π΅ΡΠ°, ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΡΡΠΈΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ·Π΅ΡΠ°, ΠΈ ΠΏΠΎΡΠΎΠΌ ΡΠ½ΠΎΠ²Π° ΡΠ΅ΡΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ.
Π ΡΠΈΠ΄Π±Π΅ΠΊ-Π»ΡΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
puts "MEMORY USAGE: %d MB" % (`ps -o rss= -p #{Process.pid}`.to_i / 1024)"Π Π°Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠΎΡΠΎΠΉ Thread, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ Π³ΡΠΎΡ
Π°ΡΡ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ Π±ΡΠ΄ΠΆΠ΅ΡΠ°.
Π’Π°ΠΊ ΠΆΠ΅ ΡΡΠΎΡ ΡΡΠ΅Π΄ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π»ΠΎΠ³Π°ΡΡ ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠ°ΠΉΠ», ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
Π Π°Π½ΡΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ Π·Π°ΡΠ·Π°ΡΡ Π΄Π»Ρ ΡΡΠΈΡ
ΡΠ΅Π»Π΅ΠΉ Valgrind Massif Visualiser, Π½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ Ρ Π½ΠΈΠΌ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈ, Π° ΠΏΠΎΠ»ΡΠ·Ρ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΌΠ½ΠΎΠ³ΠΎ. Π Π΅Π°Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ΅Π΄.
ΠΠ°Π΄ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅Π³Π΄Π°, ΡΠ΄Π΅Π»Π°ΡΡ MR Π² ΡΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ.
Π MR Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Π²Π½Π΅ΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²
task2.rb; - ΡΠ°ΠΉΠ»
case-study.mdΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ;
- ΠΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ
memory_profiler - ΠΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ
ruby-profΠ² ΡΠ΅ΠΆΠΈΠΌΠ΅CallTreec Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²QCachegrind; - ΠΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ
stackprof+CLIΠΈSpeedscope - ΠΠΎΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠΎ Π²ΡΠΎΡΡΠΌ ΡΡΠ΅Π΄ΠΎΠΌ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΠ°ΠΌΡΡΠΈ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² case-study Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ
:
- ΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π» Π³Π»Π°Π²Π½ΡΡ ΡΠΎΡΠΊΡ ΡΠΎΡΡΠ°
- ΠΊΠ°ΠΊ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ
- ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠ°
- ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΎΡΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°