在 Manus 中运行任何 Skill
一键导入
一键导入
一键在 Manus 中运行任何 Skill
开始使用performance
星标0
分支0
更新时间2026年1月23日 02:42
성능 최적화 패턴, 캐싱 전략, 데이터베이스 최적화
安装
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
SKILL.md
readonly菜单
성능 최적화 패턴, 캐싱 전략, 데이터베이스 최적화
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
디버깅 전략, 로깅 베스트 프랙티스, 에러 추적
REST API 설계 원칙, GraphQL 패턴, API 버저닝
코드 품질 가이드, 클린 코드 원칙, 리팩토링 패턴
기술 문서 작성 가이드, 문서 유형별 템플릿
Git 작업 흐름, 커밋 메시지, 브랜치 전략 가이드
보안 취약점 분석, OWASP Top 10, 인증/인가 패턴
| name | performance |
| description | 성능 최적화 패턴, 캐싱 전략, 데이터베이스 최적화 |
| 복잡도 | 이름 | 예시 |
|---|---|---|
| O(1) | 상수 | 해시맵 조회 |
| O(log n) | 로그 | 이진 탐색 |
| O(n) | 선형 | 배열 순회 |
| O(n log n) | 선형 로그 | 퀵소트, 머지소트 |
| O(n²) | 제곱 | 중첩 루프 |
| O(2ⁿ) | 지수 | 모든 부분집합 |
# Bad: O(n²) - 중첩 루프
function findDuplicates(arr):
for i in range(len(arr)):
for j in range(i+1, len(arr)):
if arr[i] == arr[j]:
return true
return false
# Good: O(n) - 해시셋
function findDuplicates(arr):
seen = set()
for item in arr:
if item in seen:
return true
seen.add(item)
return false
# Bad: N+1 쿼리
users = db.query("SELECT * FROM users")
for user in users:
posts = db.query("SELECT * FROM posts WHERE user_id = ?", user.id)
# Good: JOIN 또는 IN
users = db.query("""
SELECT users.*, posts.*
FROM users
LEFT JOIN posts ON users.id = posts.user_id
""")
# 또는 두 번 쿼리
users = db.query("SELECT * FROM users")
userIds = [u.id for u in users]
posts = db.query("SELECT * FROM posts WHERE user_id IN (?)", userIds)
# 자주 검색하는 컬럼에 인덱스
CREATE INDEX idx_users_email ON users(email)
# 복합 인덱스 (순서 중요)
CREATE INDEX idx_posts_user_created ON posts(user_id, created_at)
# 커버링 인덱스
CREATE INDEX idx_users_covering ON users(email, name, status)
# 인덱스가 사용되지 않는 경우
WHERE LOWER(email) = 'test' # 함수 사용
WHERE status != 'active' # 부정 조건
WHERE name LIKE '%test' # 앞 와일드카드
# Bad: SELECT *
SELECT * FROM users WHERE status = 'active'
# Good: 필요한 컬럼만
SELECT id, name, email FROM users WHERE status = 'active'
# Bad: 큰 OFFSET
SELECT * FROM posts ORDER BY created_at LIMIT 20 OFFSET 10000
# Good: Cursor 기반
SELECT * FROM posts
WHERE created_at < ?last_cursor
ORDER BY created_at DESC
LIMIT 20
요청 → 1. 브라우저 캐시
→ 2. CDN
→ 3. 애플리케이션 캐시 (Redis)
→ 4. 데이터베이스 쿼리 캐시
→ 5. 데이터베이스
# Cache-Aside (Lazy Loading)
function getUser(userId):
user = cache.get("user:" + userId)
if user:
return user
user = db.users.findById(userId)
cache.set("user:" + userId, user, ttl=3600)
return user
# Write-Through
function updateUser(userId, data):
user = db.users.update(userId, data)
cache.set("user:" + userId, user)
return user
# Cache Invalidation
function deleteUser(userId):
db.users.delete(userId)
cache.delete("user:" + userId)
# 데이터 특성별 TTL
CACHE_TTL = {
"user_profile": 3600, # 1시간 (자주 안 바뀜)
"user_session": 1800, # 30분
"product_list": 300, # 5분 (자주 바뀜)
"static_config": 86400, # 24시간
}
# 동기 처리 (느림)
function signup(user):
createUser(user)
sendWelcomeEmail(user) # 3초
createAnalytics(user) # 2초
return user # 총 5초+
# 비동기 처리 (빠름)
function signup(user):
createUser(user)
queue.enqueue("send_welcome_email", user)
queue.enqueue("create_analytics", user)
return user # 즉시 반환
# Bad: 개별 처리
for item in items:
db.insert(item) # N번 DB 호출
# Good: 배치 처리
db.insertMany(items) # 1번 DB 호출
# 청크 처리 (메모리 관리)
CHUNK_SIZE = 1000
for chunk in chunks(items, CHUNK_SIZE):
db.insertMany(chunk)
# Bad: 이벤트 리스너 누수
function Component:
onMount:
window.addEventListener("resize", this.handleResize)
# cleanup 없음!
# Good: cleanup
function Component:
onMount:
window.addEventListener("resize", this.handleResize)
onUnmount:
window.removeEventListener("resize", this.handleResize)
# Bad: 전체 메모리 로드
data = file.readAll() # 10GB 파일 → 메모리 부족
# Good: 스트리밍
for chunk in file.readChunks(1024 * 1024): # 1MB씩
process(chunk)
# Generator 사용
function processLargeData(items):
for item in items:
yield transform(item) # 하나씩 처리
// 코드 스플리팅
import("./heavyModule").then(module => {
module.init()
})
// Tree Shaking
import { used } from "library" // unused는 번들에서 제외
<!-- 이미지 최적화 -->
<img src="image.jpg"
loading="lazy"
srcset="small.jpg 300w, large.jpg 1000w">
# Bad: 불필요한 리렌더
function Parent:
render:
<Child data={this.state.data} />
# Good: 메모이제이션
MemoizedChild = memo(Child)
function Parent:
render:
<MemoizedChild data={this.state.data} />
# 가상화 (긴 목록)
<VirtualList
items={largeList}
itemHeight={50}
renderItem={item => <Item data={item} />}
/>
# 응답 시간
p50: 50ms # 중앙값
p95: 200ms # 95% 요청
p99: 500ms # 99% 요청
# 처리량
RPS: 1000 # 초당 요청 수
# 에러율
Error Rate < 0.1%
# Core Web Vitals
LCP (Largest Contentful Paint): < 2.5s
FID (First Input Delay): < 100ms
CLS (Cumulative Layout Shift): < 0.1
code-quality: 코드 최적화 원칙debugging: 성능 문제 분석