Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

对 parseImpl 进行优化

未关闭
#134 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
重构
描述清晰度
基本清楚
活跃度
冷清
技术栈
cpp
领域
performance

调研方向

从 JSON 解析器中的 parseImpl 开始,检查解析过程中如何使用深度向量。评估基于栈的替代方案,然后添加提议的单元测试以及 JSON 解析基线;完成的标准是解析器仍然正确,并且已记录该基线以供后续 ARM 性能工作使用。

由索引模型根据 Issue 内容生成。

描述

sonic_force_inline void parseImpl(SAX &sax) {
#define sonic_check_err()     \
  do {                        \
    if (err_ != kErrorNone) { \
      goto err_invalid_char;  \
    }                         \
  } while (0)

    using namespace sonic_json::internal;
    // TODO (liuq19): vector is a temporary choice, will optimize in future.
    std::vector<uint32_t> depth;
    const uint32_t kArrMask = 1ull << 31;
    const uint32_t kObjMask = 0;
    bool found = true;

我这边注意到 parseImpl 中解析 json 字符串的时候使用的 depth 为堆变量.
我想我可以将这里修改为栈变量以获得一些性能提升. 同时补充一个简单的单元测试, 给出一个 json 解析的 baseline. 方便后续对 arm 下的性能优化.
拜托帮忙评估一下. @liuq19

主要语言
C++
星标
976
派生
128
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

bytedance/sonic-cpp 的其他 Issue

查看 bytedance/sonic-cpp 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。