<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Memset on 办公AI智能小助手</title>
    <link>https://blog.qife122.com/tags/memset/</link>
    <description>Recent content in Memset on 办公AI智能小助手</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>qife</copyright>
    <lastBuildDate>Fri, 19 Sep 2025 18:12:58 +0800</lastBuildDate>
    <atom:link href="https://blog.qife122.com/tags/memset/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>构建更快的AMD64 Memset例程 | MSRC博客</title>
      <link>https://blog.qife122.com/p/%E6%9E%84%E5%BB%BA%E6%9B%B4%E5%BF%AB%E7%9A%84amd64-memset%E4%BE%8B%E7%A8%8B-msrc%E5%8D%9A%E5%AE%A2/</link>
      <pubDate>Fri, 19 Sep 2025 18:12:58 +0800</pubDate>
      <guid>https://blog.qife122.com/p/%E6%9E%84%E5%BB%BA%E6%9B%B4%E5%BF%AB%E7%9A%84amd64-memset%E4%BE%8B%E7%A8%8B-msrc%E5%8D%9A%E5%AE%A2/</guid>
      <description>&lt;h1 id=&#34;构建更快的amd64-memset例程&#34;&gt;构建更快的AMD64 Memset例程&lt;/h1&gt;&#xA;&lt;p&gt;在过去几年中，Microsoft推出了多项更改，导致更多内存被清零。这些缓解措施包括：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;InitAll缓解措施，它清零大多数栈变量&lt;/li&gt;&#xA;&lt;li&gt;将大多数Microsoft内核代码切换到ExAllocatePool2/ExAllocatePool3 API，这些API默认清零内存&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;在可能的情况下，编译器会展开对memset的调用。这意味着生成的代码将直接执行存储操作，而不是调用memset。这比调用memset快得多，因为它消除了调用指令的开销以及memset本身的开销（分支、支持设置任意值等）。这只有在编译器可以静态确定memset的大小且大小相对较小时才可能实现。对于大型memset，我们更倾向于调用memset函数以减少代码大小。对于大型或未知大小的memset，我们更倾向于调用memset函数，因为它可以查询各种CPU功能，从而比展开的实现表现更好。池分配器执行的所有清零操作以及InitAll执行的许多结构/数组初始化最终都会通过memset函数。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
