Teknium
ea0fd393db
perf(compression): gate CJK-aware token estimation behind an ASCII fast path
...
The salvaged estimator ran a per-character Python loop on every
estimate_tokens_rough() call — a ~28,000,000x slowdown vs (len+3)//4 on a
1MB ASCII tool output (measured ~3.0s per call). Gate it:
- str.isascii() O(1) fast path keeps pure-ASCII text bit-identical to the
classic (len+3)//4 rule at ~1.3x baseline cost (0.23us vs 0.17us per
1MB call).
- Non-ASCII text counts dense CJK chars via a compiled character-class
regex in C (len(text) - len(re.sub(''))): ~352ms/1MB hangul vs ~2.1s
for the per-char loop.
- Non-ASCII-but-non-CJK text (accents, Cyrillic, emoji) keeps the classic
rule.
Also: parity tests against the per-char reference implementation, and
updated two stale expectations that encoded the old behavior (CJK now
counted ~1 token/char; short string content now ceil-divided instead of
floored to 0). The continuity test now detects merged-into-tail summaries
via _is_context_summary_content.
2026-07-22 06:57:22 -07:00
..
2026-07-20 13:43:36 -04:00
2026-07-05 13:42:46 -07:00
2026-07-22 04:40:07 -07:00
2026-07-19 08:25:35 +05:30
2026-05-28 00:20:11 -07:00
2026-07-18 14:30:24 +05:30
2026-07-22 06:56:42 -07:00
2026-07-20 11:42:29 -04:00
2026-07-20 08:47:55 -07:00
2026-07-18 20:01:55 +05:30
2026-07-16 04:23:12 -07:00
2026-07-18 19:03:51 -04:00
2026-05-18 10:14:38 -07:00
2026-07-14 17:19:46 +05:30
2026-07-21 13:54:11 -05:00
2026-07-20 05:49:44 -07:00
2026-07-18 14:30:24 +05:30
2026-07-21 12:20:25 +05:30
2026-07-05 14:00:20 -07:00
2026-05-17 04:04:15 -07:00
2026-05-29 04:22:27 -07:00
2026-07-20 05:38:45 -07:00
2026-07-15 09:47:37 -07:00
2026-07-17 13:44:12 -07:00
2026-07-21 20:18:43 -05:00
2026-06-29 09:18:10 -04:00
2026-07-22 06:57:22 -07:00
2026-07-20 02:25:57 -07:00
2026-07-01 02:43:49 -07:00
2026-07-22 06:56:53 -07:00
2026-07-22 06:56:42 -07:00
2026-07-14 17:09:40 +05:30
2026-07-02 13:17:41 -07:00
2026-07-22 04:39:17 -07:00
2026-07-02 13:17:41 -07:00
2026-07-18 14:30:24 +05:30
2026-07-18 02:31:20 -07:00
2026-07-10 18:32:32 +05:30
2026-07-18 12:28:59 -07:00
2026-07-18 12:54:58 -07:00
2026-07-17 13:49:12 -07:00
2026-07-22 04:40:07 -07:00
2026-07-13 22:26:19 -07:00
2026-07-17 04:54:06 -07:00
2026-06-03 12:00:27 -07:00
2026-06-18 22:13:07 -07:00
2026-05-13 22:31:28 -07:00
2026-07-17 09:08:30 -07:00
2026-07-16 05:39:33 -07:00
2026-05-16 17:59:32 -07:00
2026-05-28 00:20:11 -07:00
2026-07-14 16:47:33 +05:30
2026-06-30 16:56:01 -07:00
2026-07-05 00:59:35 -07:00
2026-07-01 16:25:48 -05:00
2026-06-30 15:16:21 -05:00
2026-07-16 07:57:51 -07:00
2026-07-16 14:34:03 +05:30
2026-05-11 16:49:13 -07:00
2026-07-17 04:55:58 -07:00
2026-06-21 12:03:46 -07:00
2026-06-19 15:23:41 +08:00
2026-06-25 12:24:34 -05:00
2026-07-16 01:13:43 -07:00
2026-07-01 04:07:46 -07:00
2026-07-22 06:57:22 -07:00
2026-05-27 00:43:32 -07:00
2026-07-20 11:05:52 -07:00
2026-05-08 14:27:40 -07:00
2026-07-05 23:00:34 +05:30
2026-06-23 08:01:50 +00:00
2026-05-10 07:09:28 -07:00
2026-07-16 01:13:43 -07:00
2026-07-05 03:14:55 -07:00
2026-07-20 11:10:49 -07:00
2026-07-09 14:35:14 +05:30
2026-04-13 16:32:04 -07:00
2026-07-10 05:41:59 -05:00
2026-07-20 02:25:44 -07:00
2026-07-20 02:25:57 -07:00
2026-07-19 08:25:35 +05:30
2026-07-07 11:57:01 +05:30
2026-07-16 04:32:23 -07:00
2026-07-22 04:39:17 -07:00
2026-07-07 02:32:32 -07:00
2026-07-05 14:48:11 -07:00
2026-07-14 16:41:21 +05:30
2026-06-28 05:28:45 -07:00
2026-07-17 04:52:02 -07:00
2026-06-13 21:14:32 -07:00
2026-07-02 04:51:56 +05:30
2026-05-28 04:53:27 -07:00
2026-07-17 18:31:09 +00:00
2026-07-01 04:55:15 -07:00
2026-07-22 08:11:09 +05:30
2026-07-18 19:03:51 -04:00
2026-07-16 01:07:29 +05:30
2026-06-25 19:00:48 -07:00
2026-06-30 17:28:33 -07:00
2026-07-16 23:07:13 -07:00
2026-07-16 04:26:32 -07:00
2026-07-20 13:04:12 -07:00
2026-07-18 02:08:39 -07:00
2026-07-11 05:41:58 -07:00
2026-07-07 15:12:49 -07:00
2026-05-25 01:41:19 -07:00
2026-07-14 02:59:39 +05:30
2026-05-24 18:04:54 -07:00
2026-07-14 02:59:39 +05:30
2026-07-22 06:56:42 -07:00
2026-07-20 11:42:29 -04:00
2026-07-01 05:25:33 -07:00
2026-07-20 05:38:45 -07:00
2026-07-20 11:42:29 -04:00
2026-07-12 04:32:52 -07:00
2026-06-30 00:59:29 -05:00
2026-07-02 06:07:56 +05:30
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-06 02:42:24 -07:00
2026-07-06 04:38:17 -07:00