πŸš€ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ || ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ || Concurrency || SIMD || GPGPU
231 subscribers
25 photos
16 files
38 links
Наш Ρ‡Π°Ρ‚: @parallelcoding

1️⃣ Concurrency, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, GPGPU, IPC…
2️⃣ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°, SIMD. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, замСчания: @jin_x
Download Telegram
БСгодня, Π² свой дСнь роТдСния, Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΊΠ½ΠΈΠ³Ρƒ πŸ₯³
Книга, Ρ‡Ρ‚ΠΎ называСтся, must have.

Уильямс Π­Π½Ρ‚ΠΎΠ½ΠΈ. C++. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ программирования. β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2020. β€” 640 с.: ΠΈΠ». β€” (БСрия «Для профСссионалов»). ISBN 978-5-4461-0831-2
Бсылка Π²Π΅Π΄Ρ‘Ρ‚ Π½Π° сайт ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Π½ΠΎ ΠΊΠ½ΠΈΠ³Ρƒ нСслоТно Π½Π°ΠΉΡ‚ΠΈ ΠΈ Π² элСктронном Π²ΠΈΠ΄Π΅ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… источниках 😜
Π’Π°ΠΊΠΆΠ΅ даю ссылку Π½Π° исходныС ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ. И Π½Π° ΠΎΡ‚Ρ€Ρ‹Π²ΠΎΠΊ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ.

ΠšΡ‚ΠΎ ΡƒΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π», ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ впСчатлСниями Π² нашСм Ρ‡Π°Ρ‚Π΅. Π—Π½Π°Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний, GPGPU, профилирования, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ? ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎ Π½ΠΈΡ…! ✌️

#ΠΊΠ½ΠΈΠ³Π° #ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ #cpp
πŸ‘2πŸ”₯2πŸ‘Ž1πŸŽ‰1
Π˜Π΄Ρ‘ΠΌ дальшС... πŸ™„

C#:
πŸ”Έ АсинхронныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΎΡ‚ Π‘Ρ‚ΠΈΠ²Π΅Π½Π° ΠšΠ»ΠΈΡ€ΠΈ (Π₯Π°Π±Ρ€, 2021)
πŸ”Έ Асинхронный рассинхрон: Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с async/await Π² .NET (Π₯Π°Π±Ρ€, 2019)
πŸ”Έ ΠŸΠ»Π°Ρ‚Π½Ρ‹ΠΉ курс C# асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС Π½Π° YouTube Π΅ΡΡ‚ΡŒ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, 2 ΡƒΡ€ΠΎΠΊΠ° ΠΈΠ· курса (2019):
πŸ”Ή Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. C# АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
πŸ”Ή Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ async/await? АсинхронныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π‘#. C# АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
πŸ”Έ Π’ΠΈΠ΄Π΅ΠΎ курс C# Professional. Π£Ρ€ΠΎΠΊ 15. Async Await (АлСксандр Π¨Π΅Π²Ρ‡ΡƒΠΊ, 2015)

C++:
πŸ”Έ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ Π² Π‘++20. Π”ΠΎΠΊΠ»Π°Π΄ Π² ЯндСксС (Π₯Π°Π±Ρ€, 2021)
πŸ”Έ Анатомия асинхронных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π² Π‘++ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках (Π₯Π°Π±Ρ€, 2021)
πŸ”Έ ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ C++20 Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… (Π₯Π°Π±Ρ€, 2020)
πŸ”Έ Асинхронная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° C++ (YouTube, C++ Russia, 2019)
НСбольшой Ρ†ΠΈΠΊΠ» статСй Π½Π° Π₯Π°Π±Ρ€:
πŸ”Έ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ: Π½Π°Π·Π°Π΄ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ (2013)
πŸ”Έ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ 2: тСлСпортация сквозь ΠΏΠΎΡ€Ρ‚Π°Π»Ρ‹ (2014)
πŸ”Έ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ 3: Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΡ€Π½Π°Ρ модСль (2017)
Π”ΠΎΠΊΠ»Π°Π΄Ρ‹ ЯндСкс (YouTube):
πŸ”Ή Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - ΠŸΡƒΠ·Ρ‹Ρ€Π΅Π²ΡΠΊΠΈΠΉ Иван (2014)
πŸ”Ή АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сопрограммы - Π“Ρ€ΠΈΠ³ΠΎΡ€ΠΈΠΉ Π”Π΅ΠΌΡ‡Π΅Π½ΠΊΠΎ (2014)
πŸ”Ή Асинхронная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° C++ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства - Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ЖСстилСвский (2014)

Python:
πŸ”ΈΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ python Π±Π΅Π· Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ (Π₯Π°Π±Ρ€, 2021)
πŸ”ΈΠšΡƒΡ€Ρ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ Π² Python (YouTube, 2018)
πŸ”ΈΠœΠΈΠ½ΠΈ-курс АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python 3 (YouTube, 2018)
Π›Π΅ΠΊΡ†ΠΈΠΈ ЯндСкс (Π¨ΠΊΠΎΠ»Π° бэкСнд-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, YouTube, 2020):
πŸ”Έ АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ЛСкция 1 – Π­Π΄ΡƒΠ°Ρ€Π΄ Π–ΡƒΠΊ
πŸ”Έ АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ЛСкция 2 – АлСксандр Васин
πŸ”Έ АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ЛСкция 3 – Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ΠžΡ€Π»ΠΎΠ²
πŸ”Ή Бонус: АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ – Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ ΠžΡ€Π»ΠΎΠ² (2021)

Java:
πŸ”Έ Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java: ΠΊΠ°ΠΊ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ стоит Π»ΠΈ? Π§Π°ΡΡ‚ΡŒ I (2021)
πŸ”Έ Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java: ΠΊΠ°ΠΊ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ стоит Π»ΠΈ? Π§Π°ΡΡ‚ΡŒ II (2021)
πŸ”Έ AсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java // бСсплатный ΡƒΡ€ΠΎΠΊ OTUS (TouTube, 2018)
πŸ”Έ АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java 8: Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° (YouTube, Dev Labs, 2016)
πŸ”Έ ΠšΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠ°Ρ†ΠΈΠΈ Π² Java (Π₯Π°Π±Ρ€, 2016)
πŸ”Ή Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ плСйлист с Π²ΠΈΠ΄Π΅ΠΎ Π½Π° русском ΠΈ английском языках: #java#concurrency (YouTube)

Go:
πŸ”Έ Π›Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Go 3/3. ЭффСктивная Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ (concurrency) Π² Go (YouTube, 2018)
πŸ”Έ Как ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ с ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π² Go / АлСксСй ΠŸΠ°Π»Π°ΠΆΡ‡Π΅Π½ΠΊΠΎ (Percona) (YouTube, 2020)
πŸ”Έ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ просто Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Golang, Π½Π°Ρ‡Π°Π»ΠΎ. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°ΠΌΠΈ! (YouTube, 2021)
πŸ”Έ Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ Golang. Π£Ρ€ΠΎΠΊ 9. ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ (YouTube, 2021)
πŸ”Έ Π”Π΅Π»Π°Π΅ΠΌ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ асинхронной, разбираСмся Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Go, Ρ€ΡƒΠ³Π°Π΅ΠΌ Linux (Π₯Π°Π±Ρ€, 2021)
πŸ”Έ ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Go: Π§Π°ΡΡ‚ΡŒ I β€” ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ОБ (Π₯Π°Π±Ρ€, 2019)
πŸ”Έ ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Go: Π§Π°ΡΡ‚ΡŒ II β€” ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Go (Π₯Π°Π±Ρ€, 2020)

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно:
πŸ”Ή Асинхронная бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° Π² наши Π΄Π½ΠΈ (Π₯Π°Π±Ρ€, 2018)
πŸ”Ή КакиС измСнСния Π½ΡƒΠΆΠ½Ρ‹ языку Rust, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ асинхронный ΠΊΠΎΠ΄ стало ΠΏΡ€ΠΎΡ‰Π΅ (Π₯Π°Π±Ρ€, 2021)
πŸ”Ή Β«ΠœΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ пытаСмся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ старый ΠΊΠΎΠ΄, Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Ρƒ нас Π½Π΅ стоит Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅Β» β€” Π ΠΎΠΌΠ°Π½ Π•Π»ΠΈΠ·Π°Ρ€ΠΎΠ² ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Kotlin (Π₯Π°Π±Ρ€, 2018)

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ? Π‘Ρ‚Π°Π²ΡŒΡ‚Π΅ πŸ”₯ ΠΈ Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ! πŸ˜‰

#ΡΡ‚Π°Ρ‚ΡŒΡ #Π²ΠΈΠ΄Π΅ΠΎ #курс #Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ #csharp #cpp #python #java #golang
πŸ”₯3
ПослС Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΏΠ°Ρ€Ρƒ ΠΊΠ½ΠΈΠ³ ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

1⃣ Π“Π°Π½Ρ‚Π΅Ρ€ΠΎΡ‚ ΠšΡƒΡ€Ρ‚. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. β€” Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°-Π’ΠΈΠ»ΡŒΡΠΌΡ, 2019. β€” 400с. ISBN 978-5-907144-58-3.

πŸ”Ή ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ C++: совмСщаСм ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π”ΠΎΠΊΠ»Π°Π΄ ЯндСкса (Π₯Π°Π±Ρ€, 2020).

2⃣ Эванс Π‘Π΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½, Π“ΠΎΡ„ ДТСймс, Ньюланд ΠšΡ€ΠΈΡ. Java: оптимизация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² JVM. β€” Π’ΠΈΠ»ΡŒΡΠΌΡ, 2019. β€” 448с. ISBN 978-5-907114-84-5.

ΠΠ°ΡΠ»Π°ΠΆΠ΄Π°Π΅Ρ‚Π΅ΡΡŒ! 😊

#ΠΊΠ½ΠΈΠ³Π° #ΡΡ‚Π°Ρ‚ΡŒΡ #оптимизация #cpp #java
Forwarded from this->notes.
#cpp

ВрСмя -- дСньги.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ [упрощая], Ρ‡Ρ‚ΠΎ компиляторы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ наблюдаСмоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. А ΠΊΠ°ΠΊ ΠΎΠ½ Ρ‚Π°ΠΌ это Π΄Π΅Π»Π°Π΅Ρ‚, это ΡƒΠΆΠ΅ Π΅Π³ΠΎ Π΄Π΅Π»ΠΎ.

Π•ΡΡ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ.

O0 (о ноль)

Π‘Π°Π·Π°. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ минимальноС ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. БохраняСтся полная сСмантика ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ИдСально для Π΄Π΅Π±Π°Π³Π°.

O1

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ примСняСт простыС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π΅Π· слоТного Π°Π½Π°Π»ΠΈΠ·Π°: dead code elimination, constant propagation, basic inlining.
Π£ GCC Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ 48 ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ хочСтся сильно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Ρ€Π³ΠΈΠ½Π°Π»Π°ΠΌ).

O2

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.
ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π±Π΅Π· speed-space Ρ‚Ρ€Π΅ΠΉΠ΄ΠΎΡ„Π°: unroll loops, vectorization, strict aliasing.

O3

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ пСрфоманс ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Всё Ρ€Π°Π΄ΠΈ скорости. Π‘ΠΎΠ»Π΅Π΅ агрСссивно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Ρ‹, большС ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠΌ, большС Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ. Из-Π·Π° сильной Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ сильно Ρ€Π°Π·Π΄ΡƒΠ²Π°Ρ‚ΡŒΡΡ. Π’ Ρ‚ΠΎΠΌ числС поэтому ΠΏΠ΅Ρ€Ρ„ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½Π΅ всСгда являСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ (ΠΏΡ€ΠΈ нСбольшом instruction cache Π²Ρ‹ станСтС Ρ‡Π°Ρ‰Π΅ ΠΊΠ΅ΡˆΠΌΠΈΡΡΠΈΡ‚ΡŒ).
Если ΡƒΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ компиляции ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ΄ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΎΡ‡Π½ΠΎ Π² плюсС. НС задСвая всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.

Ofast

Как O3, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ опасныС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр --ffast-math.
ΠŸΠΎΡ‡Π΅ΠΌΡƒ опасныС? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ получаСтся Π·Π° счёт точности. ΠŸΡ€ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Beware of fast-math.

Og (ΠΎΡƒΠ΄ΠΆΠΈ)

Og = O0 + Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· O1, Π½Π΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ debug experience.

Os

Os = ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· O2, Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° + Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ исполняСмого ΠΊΠΎΠ΄Π°. Π’Ρ€Π΅ΠΉΠ΄ΠΎΡ„ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π² ΠΌΠ΅Ρ€Ρƒ.

Oz

Когда Ρƒ вас ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠ΅ ограничСния ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° ΠΈ использованию памяти, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Oz. Π—Π°ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ°Π΄ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Ρ„. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π² embedded Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ.
ΠœΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»-Π²ΠΎ исполняСмых инструкций, Ссли ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСньшим ΠΊΠΎΠ»-Π²ΠΎΠΌ Π±Π°ΠΉΡ‚ΠΎΠ².
Π”Π΅Π±Π°Π³Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ ΡƒΠΆΠ΅ Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ больно. Но ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.

ΠœΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ LTO (ΠΈ ThinLTO) ΠΈ PGO. ΠœΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ -march=... ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ..

Π”ΠΎΠΊΠ»Π°Π΄ Π² Ρ‚Π΅ΠΌΡƒ: What GCC optimization level is best for you?
Π’ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡ€ΠΎ сами ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ сравнСния с LLVM Π² Ρ€Π°Π·Π½Ρ‹Ρ… плоскостях ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ оптимизациям. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ компилятор Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ ваши ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π½ΡƒΠΆΠ΄Ρ‹, Ρ‚.ΠΊ. Ρ‚Ρ€Π΅ΠΉΠ΄ΠΎΡ„Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅.
❀1πŸ‘1