Files
kis_trader/scratch/bench_ls_temp.py

60 lines
2.1 KiB
Python

"""
LS TEMP 적용 후 pick + age_cut 쿼리 시간 측정
- 기존: ls_ws_ticks 직접 풀스캔 + REGEXP_REPLACE → ~9초
- 개선: LS TEMP 생성 후 lag_sec 기 계산 → TEMP 스캔
"""
import sys, os, time
sys.path.insert(0, '/home/hoon/kis_bot')
os.chdir('/home/hoon/kis_bot')
from database import TradeDB
from kis_trader.web.feed_collect_stats import _FeedStatsDaySlice, _count_tick_picks, _count_ob_picks, _feed_age_cut_stats
db = TradeDB()
DAY8 = "20260902" # 오늘
try:
print(f"=== LS TEMP 적용 후 성능 측정 (day={DAY8}) ===\n")
# 1. TEMP 생성 시간
t0 = time.time()
ds = _FeedStatsDaySlice(db, DAY8)
ds.ensure()
t_temp = time.time() - t0
print(f"[TEMP 생성] {t_temp:.2f}")
print(f" KIS/키움: ready={ds.ready}, tick_n={ds.tick_n}, ob_n={ds.ob_n}")
print(f" LS: ls_ready={ds.ls_ready}, ls_tick_n={ds.ls_tick_n}, ls_ob_n={ds.ls_ob_n}\n")
# 2. _count_tick_picks
t0 = time.time()
tick_wins = _count_tick_picks(db, DAY8, 3.0, ["kiwoom", "kis", "ls"], day_slice=ds)
t_tick_pick = time.time() - t0
print(f"[tick_picks] {t_tick_pick:.2f}초 → {tick_wins}")
# 3. _count_ob_picks
t0 = time.time()
ob_wins = _count_ob_picks(db, DAY8, 3.0, ["kiwoom", "kis", "ls"], day_slice=ds)
t_ob_pick = time.time() - t0
print(f"[ob_picks] {t_ob_pick:.2f}초 → {ob_wins}")
# 4. _feed_age_cut_stats (ls 구간 포함)
t0 = time.time()
age_cut = _feed_age_cut_stats(db, DAY8, 3.0, day_slice=ds)
t_age = time.time() - t0
print(f"\n[_feed_age_cut_stats] {t_age:.2f}")
for row in age_cut.get("rows", []):
src = row.get("source", "?")
tot = row.get("total", 0)
pass_p = row.get("pass_pct", "-")
print(f" {src}: total={tot}, pass={pass_p}%")
print(f"\n=== 합계 ===")
print(f" TEMP 생성: {t_temp:.2f}")
print(f" tick_picks: {t_tick_pick:.2f}")
print(f" ob_picks: {t_ob_pick:.2f}")
print(f" age_cut_stats: {t_age:.2f}")
print(f" 전체 합산: {t_temp + t_tick_pick + t_ob_pick + t_age:.2f}")
finally:
db.close()