Optimization convention-wirths-law

Wirth's Law. 소프트웨어는 하드웨어가 빨라지는 것보다 더 빨리 느려진다. 성능 최적화 주의.

install
source · Clone the upstream repo
git clone https://github.com/sunLeee/optimization
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sunLeee/optimization "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/reference/philosophy/laws/wirths" ~/.claude/skills/sunleee-optimization-convention-wirths-law && rm -rf "$T"
manifest: .claude/skills/reference/philosophy/laws/wirths/SKILL.md
source content

convention-wirths-law

@AW-030 | @docs/design/ref/team-operations.md § AW-030

Wirth's Law: "소프트웨어는 하드웨어가 빨라지는 것보다 더 빨리 느려진다." (Niklaus Wirth, 1995) 불필요한 레이어, 과도한 추상화, 메모리 낭비를 경계하라.

VIOLATION 1: 과도한 레이어로 성능 저하

# VIOLATION: 단순한 CSV 읽기에 5개 레이어
class DataSourceAdapter:
    def adapt(self, raw: bytes) -> str: return raw.decode()

class DataParser:
    def parse(self, text: str) -> list: return text.splitlines()

class DataTransformer:
    def transform(self, rows: list) -> dict: ...

class DataValidator:
    def validate(self, data: dict) -> bool: ...

class DataLoader:
    def load(self, path: str) -> pd.DataFrame:
        raw = open(path, "rb").read()
        text = DataSourceAdapter().adapt(raw)
        rows = DataParser().parse(text)
        data = DataTransformer().transform(rows)
        valid = DataValidator().validate(data)
        return pd.DataFrame(data) if valid else pd.DataFrame()
        # pandas의 read_csv 하나로 충분했던 것을

# CORRECT: 단순하고 직접적인 구현
def load_demand_data(file_path: str) -> pd.DataFrame:
    """수요 데이터를 로드한다."""
    return pd.read_csv(file_path)  # pandas가 이미 모든 것을 최적화

VIOLATION 2: 불필요한 중간 저장으로 메모리 낭비

# VIOLATION: 중간 결과를 계속 복사/저장
def process_pipeline(df: pd.DataFrame) -> pd.DataFrame:
    step1 = df.copy()                    # 불필요한 복사
    step1 = step1.dropna()

    step2 = step1.copy()                 # 불필요한 복사
    step2 = step2[step2["demand"] > 0]

    step3 = step2.copy()                 # 불필요한 복사
    step3 = step3.reset_index(drop=True)

    return step3
# CORRECT: 체이닝으로 메모리 효율적 처리
def process_pipeline(df: pd.DataFrame) -> pd.DataFrame:
    """수요 데이터를 처리한다.

    Logics:
        method chaining으로 중간 복사 없이 처리한다.
    """
    return (
        df.dropna()
          .loc[lambda x: x["demand"] > 0]
          .reset_index(drop=True)
    )

Wirth's Law 방지 체크리스트

# 메모리 사용량 확인 (AW-011 Rob Pike Rule 1 - 측정 먼저)
python3 -c "
import tracemalloc, pandas as pd
tracemalloc.start()
df = pd.read_csv('data/demand.csv')
current, peak = tracemalloc.get_traced_memory()
print(f'Peak memory: {peak / 1024 / 1024:.2f} MB')
"

# 처리 시간 측정
import time
start = time.perf_counter()
result = process_demand(df)
elapsed = time.perf_counter() - start
print(f"처리 시간: {elapsed:.3f}초")

관련 CLAUDE.md 규칙

규칙위치내용
@AW-030@docs/design/ref/team-operations.md § AW-030Wirth's Law
@AW-011@docs/design/ref/team-operations.md § AW-011Rob Pike — 측정 먼저
@AW-017@docs/design/ref/team-operations.md § AW-017KISS — 레이어 최소화

참조

  • @docs/design/ref/team-operations.md § AW-030
  • @.claude/skills/convention-kiss/SKILL.md
  • @docs/design/ref/team-operations.md § AW-011