Koho Zheng
43a9bd9e0b
perf(caching): selective copy instead of deepcopy entire history
...
Replaces full deepcopy with selective shallow copy in apply_anthropic_cache_control.
Only the 4 messages that receive cache_control markers are deep-copied; the rest
stay as references.
Measured on a 100-message conversation (typical long session):
- Before: ~15ms per call
- After: ~2ms per call
- 7.5x faster, scales with conversation length
Memory impact is also significant — no need to duplicate dozens of unchanged
messages on every turn.
The contract is unchanged: callers still get an independent message list
they can mutate. Only messages we modify (by injecting cache markers) are
copied. The rest are shared references to immutable history entries, which
is safe since the agent never mutates past turns.
(cherry picked from commit 17892df6cc948b5730013c8eaea2d5b7484baae6)
2026-07-28 20:04:58 +05:30
..
2026-07-24 11:45:57 -07:00
2026-07-05 13:42:46 -07:00
2026-07-24 11:45:57 -07:00
2026-07-24 11:45:57 -07:00
2026-07-24 15:54:08 -07:00
2026-05-28 00:20:11 -07:00
2026-07-22 10:58:22 -07:00
2026-07-27 17:47:28 -07:00
2026-07-28 18:07:44 +05:30
2026-07-27 11:53:48 -04:00
2026-07-18 20:01:55 +05:30
2026-07-16 04:23:12 -07:00
2026-07-27 22:28:08 -04:00
2026-05-18 10:14:38 -07:00
2026-07-26 23:41:54 -07:00
2026-07-25 19:27:17 -07:00
2026-07-21 13:54:11 -05:00
2026-07-23 11:45:07 -07:00
2026-07-22 18:08:59 -05:00
2026-07-18 14:30:24 +05:30
2026-07-27 01:49:43 +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-28 19:06:59 +05:30
2026-07-24 15:54:08 -07:00
2026-07-28 19:06:59 +05:30
2026-07-24 16:01:38 -07:00
2026-07-26 18:06:21 -07:00
2026-07-28 00:15:00 +05:00
2026-07-23 19:44:35 -07:00
2026-07-27 22:55:18 -05:00
2026-07-28 01:10:05 +05:30
2026-07-28 18:47:54 +05:30
2026-07-24 17:10:39 -07:00
2026-07-02 13:17:41 -07:00
2026-07-24 15:50:36 -07:00
2026-07-24 17:10:39 -07:00
2026-07-23 01:28:58 -05:00
2026-07-18 02:31:20 -07:00
2026-07-25 18:10:24 -07:00
2026-07-23 07:33:36 -07:00
2026-07-18 12:28:59 -07:00
2026-07-27 20:27:56 -07:00
2026-07-17 13:49:12 -07:00
2026-07-22 04:40:07 -07:00
2026-07-26 20:58:57 -07:00
2026-07-26 20:59:16 -07:00
2026-07-24 12:10:03 -05:00
2026-06-18 22:13:07 -07:00
2026-05-13 22:31:28 -07:00
2026-07-23 08:32:09 -07:00
2026-07-28 18:47:54 +05:30
2026-07-26 12:54:45 -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-23 08:19:14 -07:00
2026-05-11 16:49:13 -07:00
2026-07-24 13:00:53 +05:30
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-28 01:10:05 +05:30
2026-07-01 04:07:46 -07:00
2026-07-24 13:00:15 -07:00
2026-05-27 00:43:32 -07:00
2026-07-20 11:05:52 -07:00
2026-07-24 17:10:39 -07:00
2026-07-22 12:10:58 -05:00
2026-06-23 08:01:50 +00:00
2026-07-16 01:13:43 -07:00
2026-07-05 03:14:55 -07:00
2026-07-23 16:58:06 -07:00
2026-07-28 20:04:58 +05:30
2026-07-10 05:41:59 -05:00
2026-07-27 23:09:47 +05:00
2026-07-26 20:59:11 -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-26 20:36:47 -07:00
2026-07-05 14:48:11 -07:00
2026-07-28 03:44:17 -05:00
2026-07-24 11:45:57 -07:00
2026-07-26 20:59:26 -07:00
2026-07-24 15:53:38 -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-26 23:27:30 -07:00
2026-07-01 04:55:15 -07:00
2026-07-22 08:11:09 +05:30
2026-07-28 01:10:05 +05:30
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-26 02:58:16 -05:00
2026-07-16 04:26:32 -07:00
2026-07-27 22:28:08 -04:00
2026-07-26 21:27:45 -07:00
2026-07-11 05:41:58 -07:00
2026-07-24 11:45:57 -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-28 03:54:16 -05:00
2026-07-27 22:28:08 -04:00
2026-07-22 12:02:40 -05:00
2026-07-26 17:47:51 -07:00
2026-07-20 05:38:45 -07:00
2026-07-24 15:55:08 -07: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