Skip to content

[0082] bytevector-base64-encode 下沉到 native C++ 实现#880

Merged
da-liii merged 1 commit into
mainfrom
da/0082/native_encode
Jun 28, 2026
Merged

[0082] bytevector-base64-encode 下沉到 native C++ 实现#880
da-liii merged 1 commit into
mainfrom
da/0082/native_encode

Conversation

@da-liii

@da-liii da-liii commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • (liii base64)bytevector-base64-encode 从纯 Scheme 实现下沉到 native C++,与 0080 decode 下沉思路对称
  • src/liii_base64.cpp 新增 f_bytevector_base64_encode,每 3 字节打包成 triple 按 6-bit 切分查表,尾部处理 == / = 填充
  • goldfish/liii/base64.scm encode 转发到 native,删除原 Scheme 循环及 BYTE2BASE64_BV / BASE64_PAD_BYTE 常量
  • devel/0082.md 记录任务与性能对比

性能对比(debug 构建,单次平均耗时)

操作 0081 Scheme 0082 native 加速比
bytevector-base64-encode tiny(8B) ~164µs ~1.28µs ~128x
bytevector-base64-encode small(100B) ~1.77ms ~1.72µs ~1029x
bytevector-base64-encode medium(1KB) ~18.3ms ~4.39µs ~4168x
bytevector-base64-encode large(10KB) ~193ms ~26µs ~7423x

(liii base64) 的 bytevector 编解码两端现均跑在 native 层;string-base64-encode 经 `utf8->string ∘ bytevector-base64-encode` 复用,瓶颈转移到 utf8 转换层。

Test plan

  • bin/gf tests/liii/base64/bytevector-base64-encode-test.scm — 22 correct, 0 failed
  • bin/gf tests/liii/base64/bytevector-base64-decode-test.scm — 36 correct, 0 failed
  • bin/gf tests/liii/base64/base64-encode-test.scm — 10 correct, 0 failed
  • bin/gf tests/liii/base64/base64-decode-test.scm — 9 correct, 0 failed
  • bin/gf bench/bytevector-base64-encode-perf.scm — before/after 数据已记录

🤖 Generated with Claude Code

@da-liii da-liii merged commit b7bb3a2 into main Jun 28, 2026
5 checks passed
@da-liii da-liii deleted the da/0082/native_encode branch June 28, 2026 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant