Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
“String intern” を知ってますか? 2022/10/14 @ PyCon JP 2022 LT
Slide 2
Slide 2 text
● 小門 照太 ○ https://portfolio.skokado.me/ ● 職種:インフラ / クラウドエンジニア ● 所属:株式会社RevComm ● Python, AWS, DevOps, … ● 小鳥+猫 自己紹介
Slide 3
Slide 3 text
(再掲) “String intern” を知ってますか? 2022/10/14 @ PyCon JP 2022 LT
Slide 4
Slide 4 text
クイズです
Slide 5
Slide 5 text
次のうち is による比較結果が True になるのはどれでしょう? クイズです
Slide 6
Slide 6 text
次のうち is による比較結果が True になるのはどれでしょう? クイズです
Slide 7
Slide 7 text
次のうち is による比較結果が True になるのはどれでしょう? ⇒Answer: 1, 2, 3 クイズです
Slide 8
Slide 8 text
次のうち is による比較結果が True になるのはどれでしょう? ⇒Answer: 1, 2, 3 ※補足 - Python 3.10.6 - 対話モードで実行する場合 - 右の記法では True クイズです
Slide 9
Slide 9 text
“String intern” なぜか
Slide 10
Slide 10 text
メモリー内の “隔離” されたテーブルに文字列の値のコピーを格納する仕組み What is “String intern” ?
Slide 11
Slide 11 text
メモリー内の “隔離” されたテーブルに文字列の値のコピーを格納する仕組み What is “String intern” ? 文字列 PyConJP が “intern” された
Slide 12
Slide 12 text
メモリー内の “隔離” されたテーブルに文字列の値のコピーを格納する仕組み メリット ● 値が同じ変数同士を比較する場合のパフォーマンス向上 ○ 文字列の値ではなくポインタで比較可能になるため What is “String intern” ?
Slide 13
Slide 13 text
しかし、メモリー使用量やオーバーヘッドのトレードオフがある。 そのため「全ての文字列を intern する」わけではない。 ⇒Python はいくつかのルールに基づいて intern を行う ※「いくつかのルール」のドキュメントは見つけられず … What is “String intern” ?
Slide 14
Slide 14 text
しかし、メモリー使用量やオーバーヘッドのトレードオフがある。 そのため「全ての文字列を intern する」わけではない。 ⇒Python はいくつかのルールに基づいて intern を行う ※「いくつかのルール」のドキュメントは見つけられず … What is “String intern” ?
Slide 15
Slide 15 text
intern を強制することが可能 sys.intern()
Slide 16
Slide 16 text
「長い文字列の比較」においてパフォーマンスが向上する 使いどころ
Slide 17
Slide 17 text
「長い文字列の比較」においてパフォーマンスが向上する 使いどころ
Slide 18
Slide 18 text
リンク ● String Interning in Python: A Hidden Gem That Makes Your Code Faster Appendix
Slide 19
Slide 19 text
Thank you !