feat(Core/UI): 백테스트 전역 엔진 선택 버튼 추가 및 스캘핑 Rust 방어로직 포팅 1차 완료
This commit is contained in:
59
scratch/bench_ls_temp.py
Normal file
59
scratch/bench_ls_temp.py
Normal file
@@ -0,0 +1,59 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user