为什么memsetmemsetforfor 循环更吃时间?

2 条评论

  • @ 2025-7-11 10:10:21

    @

    在百万级数据量测试中,memset 的执行时间仅为手动 for 循环的 40%50%40\% \thicksim 50\%,主要得益于底层汇编优化和硬件指令加速。——来源于百度

    但是呢,根据你写的 memset(b, 0, sizeof b); ,容易注意到你 memset 的范围是整个 b 数组 为 $O(T \times \max(N)) = O(10^{5} \times 10^{5}) = O(10^{10})$ ,但是你写的 for (int i = 1; i <= n; i++) 的时间复杂度为 O(N)=O(106)O(\sum N) = O(10^6) (输入保证所有测试用例的 NN 之和不超过 10610^6)。

    • @ 2025-7-10 20:34:09

      memset 6个字符,而 for 3个字符,6>3 (我因为这个WA了两发)

      • 1