코드를 AI에 넣을 때 — 언어별 토큰 비용 3.4배 차이 실측
코드를 AI에게 검토시키거나 설명을 받을 때, 프로젝트 파일을 통째로 붙여 넣는 경우가 많습니다. 그런데 같은 기능이라도 언어에 따라 토큰이 3배 넘게 차이납니다.
같은 동작을 하는 코드를 5개 언어로 작성해 직접 측정했습니다.
측정 결과
“두 수를 더하는 함수를 만들고 1+2를 출력한다”는 동일한 기능을 각 언어의 관용적인 방식으로 작성했습니다.
| 언어 | 토큰 | 글자 수 | 글자당 토큰 | 최소 대비 |
|---|---|---|---|---|
| SQL | 14 | 48자 | 0.29 | 100% |
| Python | 20 | 49자 | 0.41 | 143% |
| JavaScript | 23 | 63자 | 0.37 | 164% |
| Go | 36 | 109자 | 0.33 | 257% |
| Java | 47 | 174자 | 0.27 | 336% |
Java가 Python의 2.35배, SQL의 3.36배입니다. 같은 일을 시키는데 비용이 세 배 넘게 드는 셈입니다.
흥미로운 역설 — 글자당은 Java가 가장 효율적
표를 자세히 보면 이상한 점이 있습니다. 글자당 토큰은 Java가 0.27로 가장 낮습니다. 가장 효율적인데 총 토큰은 가장 많습니다.
이유는 단순합니다. Java는 글자 수 자체가 많습니다. public static void main(String[] args) 같은 긴 상용구가 필요하기 때문입니다. 다만 이런 상용구는 워낙 흔해서 토크나이저가 통째로 하나의 토큰으로 학습해 뒀습니다.
토큰 수를 결정하는 것은 글자 수가 아니라 ‘얼마나 흔한 패턴인가’입니다. 그리고 총비용을 결정하는 것은 결국 코드가 얼마나 장황한가입니다.
코드는 한국어보다 훨씬 저렴하다
앞서 측정한 한국어와 비교하면 코드의 효율이 잘 드러납니다.
| 텍스트 종류 | 글자당 토큰 |
|---|---|
| Java 코드 | 0.27 |
| SQL | 0.29 |
| Go | 0.33 |
| JavaScript | 0.37 |
| Python | 0.41 |
| 한국어 일반 문장 | 0.54 |
| 한국어 계약서·회의록 | 0.63 |
코드가 한국어보다 글자당 25~50% 저렴합니다. 영어 기반이고 반복 패턴이 많아 토크나이저가 잘 학습해 둔 덕분입니다.
실무적으로는 이런 뜻입니다. 코드 파일을 넣는 것보다 그 코드를 설명하는 한국어 주석과 문서가 더 비쌀 수 있습니다.
코드를 넣을 때 토큰 아끼는 법
1. 관련 없는 부분은 빼세요
가장 효과가 큽니다. 파일 전체가 아니라 문제가 되는 함수와 그것이 호출하는 부분만 넣으세요. import 목록, 주석 블록, 테스트 코드는 대개 불필요합니다.
2. 여러 파일을 넣을 때는 경로를 짧게
파일 경로가 길면 파일마다 그 비용이 붙습니다. src/main/java/com/example/service/impl/UserServiceImpl.java 같은 경로는 그 자체로 15토큰이 넘습니다. 여러 파일을 넣을 때는 짧은 별칭을 붙이고 매핑을 한 번만 적어주는 편이 낫습니다.
[비효율]
=== src/main/java/com/example/service/impl/UserServiceImpl.java ===
(코드)
=== src/main/java/com/example/service/impl/OrderServiceImpl.java ===
(코드)
[효율]
A = UserServiceImpl, B = OrderServiceImpl
=== A ===
(코드)
=== B ===
(코드)3. 에러 로그는 잘라서
스택 트레이스는 길고 반복적입니다. 프레임워크 내부 프레임 수십 줄보다 내 코드가 등장하는 줄과 에러 메시지만 있으면 대개 충분합니다.
4. 자동 생성 코드는 넣지 마세요
마이그레이션 파일, 빌드 산출물, 패키지 잠금 파일은 길기만 하고 정보가 적습니다. 필요하면 “이러이러한 자동 생성 파일이 있다”고 설명으로 대체하세요.
한도로 환산하면
컨텍스트 한도에 코드가 얼마나 들어가는지 어림잡을 수 있습니다. 실제 코드 파일의 평균 줄 길이를 40자로 가정한 근사치입니다.
| 컨텍스트 | Python 기준 | Java 기준 |
|---|---|---|
| 8,000 토큰 | 약 480줄 | 약 200줄 |
| 128,000 토큰 | 약 7,800줄 | 약 3,300줄 |
| 1,000,000 토큰 | 약 61,000줄 | 약 26,000줄 |
답변과 대화 기록도 같은 한도를 나눠 쓰므로 절반 정도로 여유를 두세요. 그리고 대화를 이어갈수록 코드가 매 턴 재전송된다는 점도 함께 고려해야 합니다.
측정 방법과 한계
각 언어의 관용적인 작성 방식으로 동일 기능을 구현해 tiktoken 0.14.0의 o200k_base 인코딩으로 측정했습니다.
import tiktoken
enc = tiktoken.get_encoding("o200k_base")
py = 'def add(a, b):\n return a + b\n\nprint(add(1, 2))'
java = ('public class Main {\n static int add(int a, int b) {\n'
' return a + b;\n }\n'
' public static void main(String[] args) {\n'
' System.out.println(add(1, 2));\n }\n}')
print(len(enc.encode(py)), len(enc.encode(java))) # 20 47한계: 예제가 짧아 언어별 상용구의 영향이 크게 반영됐습니다. 실제 대형 코드베이스에서는 비율이 다소 완화될 수 있습니다. 정확한 값은 본인 코드를 위 코드로 직접 재보시는 것이 확실합니다. 또한 OpenAI 계열 토크나이저 기준이므로 다른 모델은 수치가 다릅니다.
정리
- 같은 기능도 언어에 따라 토큰이 최대 3.36배 차이 납니다 (Java vs SQL).
- 글자당 효율과 총비용은 반대로 나타납니다. Java는 글자당 가장 싸지만 총량이 가장 많습니다.
- 코드는 한국어보다 글자당 25~50% 저렴합니다.
- 가장 확실한 절약은 관련 없는 코드를 빼는 것입니다.
- 긴 파일 경로, 스택 트레이스, 자동 생성 파일이 숨은 비용입니다.
측정일: 2026년 9월 21일 / tiktoken 0.14.0 / 인코딩 o200k_base