問題一覧に戻る
上級パフォーマンスと並行処理
問題120: 最適化テクニック
__slots__属性を定義すると、インスタンスの属性を固定し、__dict__の代わりに効率的なスロットを使用します。これによりメモリ使用量を大幅に削減できます。また、ローカル変数の活用やループ内での属性アクセスの最適化など、様々なテクニックでパフォーマンスを向上させることができます。
# 最適化テクニック
import sys
# __slots__なし
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# __slots__あり
class OptimizedPoint:
= ['x', 'y']
def __init__(self, x, y):
self.x = x
self.y = y
# メモリを比較
p1 = Point(1, 2)
p2 = OptimizedPoint(1, 2)
print(f"Without slots: {sys.getsizeof(p1.)}B")
print(f"With slots: {hasattr(p2, '')}")