Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
わかった気になる、Coroutine1.7.0のチャンネルのパフォーマンス向上
Search
RyuNen344
May 13, 2023
Technology
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
わかった気になる、Coroutine1.7.0のチャンネルのパフォーマンス向上
RyuNen344
May 13, 2023
More Decks by RyuNen344
See All by RyuNen344
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
270
せめて、ネイティブらしく
ryunen344
2
3.2k
Cache Me If You Can
ryunen344
3
9.1k
WindowInsetsだってテストしたい
ryunen344
2
410
サプライチェーン攻撃に備える
ryunen344
1
3.8k
Okioに愛を込めて
ryunen344
3
3k
Firebase Hostingを使ってPasskeyをandroidアプリで試してみよう
ryunen344
2
2.1k
Xcode Meets Gradle
ryunen344
0
450
K/NとNSKeyedArchiverと私
ryunen344
0
630
Other Decks in Technology
See All in Technology
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
230
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
200
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
1
170
少人数データチームのDevin活用実践事例
runandy16
2
430
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
140
PfEingのアプローチで働こう
rindrics
0
160
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
250
AIエージェントを雇う前に決める5つのこと
knishioka
1
150
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
190
IDperturb: Enhancing Variation in Synthetic Face Generation via Angular Perturbation
sansantech
PRO
0
130
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
9
1.8k
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
3
1.5k
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Writing Fast Ruby
sferik
630
63k
Believing is Seeing
oripsolob
1
210
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
It's Worth the Effort
3n
188
29k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Fireside Chat
paigeccino
42
4k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
Θ͔ͬͨؾʹͳΔɺCoroutine1.7.0ͷ νϟϯωϧͷύϑΥʔϚϯε্ 2023.05.13 KotlinConf 2023 Global in Kyoto Bunjiro Miyoshi
About Me • teamLab Inc.ॴଐ • (ࣗশ)ϚϧνϓϥοτϑΥʔϜܳਓ • ࠷ۙGoogle/TinkͷKMMϥούʔϥΠϒϥϦ࡞ͬͨ •
https://github.com/RyuNen344/tink-kmm
kotlinx.coroutine 1.7 ϦϦʔε͞Ε·ͨ͠Ͷ
Release Note
Release Note runTestͷdefault timeout͕60s͔Β10sʹมߋ͞ΕͨΓ
Release Note Kotlin NativeʹDispatchers.IO͕ొ
Release Note Kotlin NativeͷOld Memory Model͕আ͞Εͨ
Release Note Channelͷ࠶࣮
͢͜ͱɾ͞ͳ͍͜ͱ • ͢͜ͱ • چ࣮ɾ৽࣮ͷҧ͍ • ;ΜΘΓͱͨ͠Lock freeपΓͷ • ͞ͳ͍͜ͱ
• Lock freeपΓͷఆٛతʹਖ਼͍͠ղઆ • kumagi͞Μͷࢿྉ͕ͱͯษڧʹͳΓ·͢ • https://www.docswell.com/s/kumagi/ZP99EQ-lock-free • Ktorͷ3rd PartyϥΠϒϥϦͷӨڹ
ͳͥ࠶࣮ #1 • σʔλߏConcurrent Double Linked List • ͦͦޡͬͨཧΛݩʹ࣮ͯ͠ •
อकੑͷ • ઢܗԽՄೳੑͷ • ૢ࡞͕ஞ࣮࣍ߦ͞Ε͍ͯΔ͜ͱͷอূ
ͳͥ࠶࣮(Double Linked List) #1 ઌ಄ͱ࠷ޙͷϙΠϯλΛอ࣋ w w w w
ͳͥ࠶࣮(Double Linked List) #1 ཁૉྡ͢ΔͷϙΠϯλΛอ࣋
ͳͥ࠶࣮(Double Linked List) #1
ͳͥ࠶࣮(Double Linked List) #1 ৽͍͠ཁૉͷੜ DoubleLinkedListࣗମͷઌ಄ͱ چઌ಄ͷཁૉͷྡ͢ΔཁૉΛߋ৽
ͳͥ࠶࣮ #2 • ࣮͕ෳࡶʹͳ͍ͬͯͯbyte code size, dex sizeʹѱӨڹ • DCAS,
N-word CASͰ࣮ • ֦ுੑɺਖ਼֬ੑɺύϑΥʔϚϯεʹ͕͋Δ • CASɿCompare And Swap જࡏతͳσʔλڝ߹ͷ͕ൃੜͨ͠߹ͷਪଌͱमਖ਼Λࠔʹ͍ͯͨ͠
ͳͥ࠶࣮(Compare And Swap) #2
ͳͥ࠶࣮(Compare And Swap) #2 Pointerͷٙࣅίʔυ
ͳͥ࠶࣮(Compare And Swap) #2 PointerͷͱPointerʹೖͬͯΔ͖ΛνΣοΫ w w
ͳͥ࠶࣮(Compare And Swap) #2 ظͲ͓Γͷ͕Pointerʹ֨ೲ͞Ε͍ͯͨΒߋ৽
ͳͥ࠶࣮(D-Compare And Swap) #2
ͳͥ࠶࣮(D-Compare And Swap) #2 ظͲ͓Γͷ͕Pointerʹ֨ೲ͞ΕΔ·ͰԿCAS
ͲͷΑ͏ʹ࠶࣮ • σʔλߏྻͰ࣮ • ΦϒδΣΫτૢ࡞Fetch And Addʹมߋ
ͲͷΑ͏ʹ࠶࣮(Fetch And Add) Pointerʹೖ͍ͬͯͨݹ͍ΛҰ࣌อଘͯ͠ॲཧΛ࣮ߦ
ͲͷΑ͏ʹ࠶࣮(Fetch And Add) Ұ࣌อଘͨ͠ݹ͍Λݺͼग़͠ݩʹฦ٫
࠶࣮ͯ͠Ͳ͏ͳΔ • ҰൠతͳڥͰ10 ʙ 25%ߴԽ
·ͱΊ • 1.7.0ͰChannelࣗମͷ࠶࣮͕ͳ͞ΕͯύϑΥʔϚϯε্͕ͨ͠ • (Opt)BroadcastChannelܥΛআ͢Δ४උ͕ͬͨ • (Opt)͜ͷ࠶࣮ͷ͓͔͛ͰsemaphoremutexपΓͷվળೖͬͯ ͍Δ
͍͞͝ʹ ࢿྉ࡞ͬͯͨΒ1.7.1ϦϦʔε͞Εͨ😂
Ҿ༻ • https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.7.0 • https://github.com/Kotlin/kotlinx.coroutines/issues/3621 • https://github.com/Kotlin/kotlinx.coroutines/pull/3103 • https://arxiv.org/abs/2211.04986