每日HackerNews RSS

## x86 整数加法:编译器技巧 x86 汇编处理整数加法的方式与 ARM 等架构不同。虽然 ARM 允许直接的“结果 = 操作数1 + 操作数2”指令,但 x86 的 `add` 指令会修改第一个操作数 (`lhs += rhs`),缺乏专用的目标寄存器。 编译器通过巧妙地利用 x86 强大的内存寻址系统来克服这个限制。`mov` 指令可以直接访问内存,而无需专门的加载/存储,寻址模式允许在单个指令中进行复杂的计算。 `lea` (加载有效地址) 指令*计算*内存地址,而无需实际访问它。这被用于加法:通过将加法构建为计算一个由操作数偏移的内存地址,寻址硬件执行加法。 这个 `lea` 技巧有效地实现了三操作数加法,指定了目标寄存器并保留了原始操作数的值。虽然它涉及 64 位计算,即使是 32 位加法也是如此,但多余的位会被丢弃。这种技术通常可以节省一条指令并提高性能,编译器会自动在有利的情况下使用它。

## Hacker News 讨论总结:x86 LEA 指令和汇编优化 这次 Hacker News 的讨论围绕 Matt Godbolt 最近的文章,探讨了 x86 汇编中的 `lea` (Load Effective Address) 指令。核心观点是,`lea` 可以是一种高效的加法运算方式,尤其是在需要保留操作数的值或 CPU 标志时。 用户深入探讨了 `lea` 具有优势的原因——它避免了修改原始操作数,并且可以保留进位标志,这在跳转表实现等场景中很有用。 讨论扩展到更广泛的话题,例如何时使用内联汇编、编译器在优化中的作用,以及人工编写的汇编代码与编译器生成的代码之间的权衡。 许多评论者指出,现代编译器通常在优化方面非常有效,但手动编写的汇编代码在特定领域仍然有益,例如模拟器、解释器或处理专用硬件功能。 讨论还涉及依赖编译器“技巧”的脆弱性与结构良好代码的可移植性之间的争论。 讨论还涉及 x86 指令编码的复杂性和 CISC 与 RISC 架构的历史背景。 最后,分享了学习汇编和理解编译器输出的资源(如 Godbolt.org)。

## HIV 治疗取得进展,新的干细胞案例 第七位患者在接受血液癌症干细胞移植后被治愈了艾滋病毒,这个案例正在挑战之前关于如何实现这种治愈的假设。 与之前的五个案例不同,这位患者接受的干细胞*没有*被认为对艾滋病毒具有抵抗力的基因突变(CCR5)。 这加强了证据,继去年第六个类似案例之后,CCR5并非治愈的唯一关键。 这位患者于2015年接受治疗,在接受移植前接受化疗以消除他现有的免疫细胞。 他在移植后三年停止了抗逆转录病毒治疗(ART),并且在超过七年的时间里保持无病毒状态——这是第二长的记录在案的缓解期。 科学家们现在认为,成功的治愈可能取决于供者的新的免疫系统主动清除残留的患者细胞,然后再让病毒重新建立自身,而不是仅仅依赖于具有抵抗力的细胞。 虽然更广泛的干细胞供者可能潜在地可行,但成功的结局可能需要基因因素的特定组合。 尽管取得了这些进展,但干细胞移植仍然是一种有风险的程序,仅适用于*也*需要癌症治疗的人。 ART 和像lenacapavir 这样的新型长效药物仍然是管理艾滋病毒最安全和最有效的方法,适用于绝大多数人。

## 接受干细胞移植后治愈艾滋病毒 – 摘要 一名男子在接受干细胞移植后意外治愈了艾滋病毒,这是第二例*没有*使用抗艾滋病毒干细胞发生的病例。这一点意义重大,因为之前的成功案例依赖于具有罕见基因突变(CCR5)的供体,该突变赋予了抗艾滋病毒能力,这表明即使没有它,治愈也是可能的。 然而,该程序离广泛应用还有很远。干细胞移植具有风险,生存率约为50%,通常涉及摧毁患者的免疫系统,并面临移植物抗宿主病等潜在并发症。许多评论员指出,目前的艾滋病毒治疗可以实现接近正常的寿命,使得这种剧烈的程序往往“弊大于利”。 该病例为正在增长的、但仍然有限的研究提供了治愈潜在方案的线索。虽然本身并非突破,但它强化了追求艾滋病毒治愈并非徒劳的想法,并为病毒和免疫系统提供了宝贵的见解。

启用 JavaScript 和 Cookie 以继续。

## YouTube 与系统计时器分辨率 - Hacker News 摘要 Hacker News 上的一场讨论集中在一个令人惊讶的发现:YouTube 可以改变浏览器的系统计时器分辨率,可能影响性能。用户对网站拥有如此底层的系统控制表示担忧,质疑浏览器是仅仅作为网页显示工具,还是“应用程序平台”。 对话延伸到更广泛的操作系统行为、Windows “技术债务”以及系统设置的意外副作用等问题。例子包括 Windows 安装程序在鼠标移动时加速,以及语音识别软件限制风扇转速。 许多评论者强调了计时器分辨率的历史背景,解释了过去调整它对于对性能敏感的应用程序(如音频播放器)至关重要。现代系统旨在在准确性和功耗效率之间取得平衡,近期的 Windows 版本已经改变了计时器分辨率的管理方式。讨论最终指向了应用程序、操作系统和硬件之间复杂的相互作用,普遍认为当前的软件堆栈通常臃肿且效率低下。

## AWS Lambda 性能基准测试总结 (2025) 最近的基准测试比较了 AWS Lambda 在 x86_64 和 arm64 架构上的性能,使用了 Node.js、Python 和 Rust 运行时,以及 CPU 密集型、内存密集型和轻量级工作负载。结果压倒性地支持 **arm64**,在性能相同或更好情况下,计算成本降低了大约 **30-40%**。 **主要发现:** * **Rust 在 arm64 上**始终提供最高的性能和成本效益。 * **Python 3.11 在 arm64 上**优于较新的 Python 版本。 * **Node.js 22 在 arm64 上**比 Node.js 20 在 x86_64 上快约 15-20%。 * 在所有运行时中,**冷启动**在 arm64 上快 13-24%。 该基准测试从头开始构建,因为缺乏之前 AWS 基准测试的公开代码,并且是完全 **开源** 的,可在 [GitHub](https://github.com/aws-lambda-performance-benchmarks) 上获取。它包括详细的文档和已发布的测试结果。 除非存在兼容性问题,否则 **建议将 arm64 作为新 Lambda 函数的默认架构**。这在不牺牲性能的情况下提供了显著的成本优势,使其成为大多数工作负载的直接优化方案。该基准测试强调了使用特定用例进行测试的重要性,但为 arm64 和较新运行时带来的好处提供了强有力的证据。

## AWS Lambda 性能:ARM64 vs. x86_64 (2025年末) - 摘要 最近的基准测试比较了 AWS Lambda 在 ARM64 (Graviton) 和 x86_64 架构上的性能,涵盖了多种运行时 (Rust, Python, Node.js)。结果表明,ARM64 通常提供“免费”的加速,尤其是在 Node.js 22 上表现明显,其性能优于 x86_64 上的 Node.js 20,提升了 15-20%。 然而,这些基准测试引发了争论。人们对使用 SHA256 哈希作为代表性工作负载的有效性表示担忧,因为它严重依赖于优化的库(如 OpenSSL),而不是运行时本身。一些人对结果感到惊讶——Rust 的速度并没有明显快于 Python,并且 Node.js 的表现不佳。 讨论强调了潜在的瓶颈,例如 AWS SDK 的实现和冷启动时间,并建议预编译 Python 文件或利用全局 boto3 客户端初始化。最终,共识是,虽然数据提供了一般的比较,但对于准确的性能评估,仍然需要对单个应用程序进行基准测试。

12月1日起,将推出一个名为“编译器优化历险记”(AoCO2025)的每日技术系列,持续到12月25日。该项目历时一年,每天将包含一篇博文和配套视频,探索迷人的C和C++编译器优化技术。 内容将涵盖从低级别的、特定架构的技巧(主要针对x86-64,并包含一些ARM覆盖)到更广泛的高级优化。每篇文章将解释优化*何时*适用,*如何*理解生成的汇编代码,以及关键的,优化*何时*不起作用。 作者希望展示现代编译器的强大和复杂性,并邀请观众在他们的博客、YouTube频道或专门的AoCO2025播放列表中关注。

## 编译器优化挑战2025 - 总结 Hacker News的讨论围绕Matt Godbolt的“编译器优化挑战2025”,这是一个每日探索编译器优化的系列。用户高度赞扬Godbolt的工作,并推荐他之前的访谈和文章作为该主题的优秀入门材料。 讨论的一个关键要点是理解高于你的主要编程层级的知识的重要性。例如,了解C运行时与操作系统交互的方式对于调试至关重要。许多评论者呼应了大学里学到的一种观点:深入理解一层,掌握其下层级的运作,并了解更下层级的结构。 对话还涉及编译器标志,讨论了`-O2`与`-O3`优化级别。虽然`-O3`可以提供性能提升,但由于潜在的不稳定性和代码体积增加,通常会避免使用。许多人强调针对特定用例进行性能分析,以及避免未定义行为的重要性。该系列被描述为一种建立对计算机工作原理的直觉的好方法,类似于代码挑战,但专为编译器爱好者设计。

## 解构交互设计:超越感觉与直觉 交互设计常常*感觉*直观,但将其建立在科学基础上却充满挑战。本文探讨了那些常常被忽视的细节,它们促成了真正优秀的界面,超越了诸如人物画像和故事板等标准的UX实践,深入剖析某些交互*为何*有效。 作者认为交互设计是一种回应人类意图的艺术形式,平衡了形式与功能。成功在于利用熟悉的**隐喻**——例如滑动模仿翻页——来创造流畅自然的体验。手势并非随意,它们利用了本能行为,例如捏合动作模仿精细的运动技能。 关键要素包括**动能物理学**(手势中的动量)、**响应式手势**(基于意图的即时反馈与延迟动作)以及**空间一致性**(保持界面元素之间的逻辑关系)。即使是看似微小的细节,例如暂时显示被手指遮挡的内容,也有助于可用性。 除了实用性之外,“**可玩性**”——融入令人满意的重复动作——可以增强参与度。**菲茨定律**(目标大小与距离)以及理解**隐式输入**(推断用户意图)等原则至关重要。最终,分析这些细节,超越仅仅“感觉正确”,能够培养设计直觉并提升执行力。

一场 Hacker News 的讨论围绕 Rauno 的文章“交互设计的隐形细节”(rauno.me)。用户特别关注基于手势的界面细微差别,特别是比较了苹果 iOS 和 Android 的方法。 一些评论者不喜欢苹果多种下拉手势的实现方式,认为与 Android 统一的控制面板访问相比,它令人困惑。也有人表达了对苹果 Face ID 识别的不满,提到了重复滑动和丢失上下文的问题。 一位新 iPhone 用户指出 iOS 手势的“物理感”,感觉比 Android 更直接、受桌面启发的动作更直观和高级。其他人称赞这篇文章的深度以及作为信息资源的优秀 UI 设计。最后一条评论强调了在交互设计中考虑更广泛的背景的重要性,而不仅仅是特定的界面机制。

## Stride 4.3:游戏开发重大更新 Stride 4.3现已发布,为游戏开发者带来显著改进。引擎升级至 **.NET 10 和 C# 14**,提供性能提升、效率和现代语言特性。一个关键的补充是 **Bepu Physics**,一种快速的、基于C#的物理引擎,现已与现有的Bullet引擎集成(未来将重点关注Bepu)。 此版本还引入了 **Vulkan 计算着色器支持**和 **自定义资源**,允许更灵活的数据管理和复杂的资源流程。开发者现在可以直接在 **Linux 和 Apple 桌面**上构建项目,扩展了跨平台能力。 进一步的增强包括用于高效 **网格操作**的辅助工具,以及从GameStudio直接打开 **Rider 和 VSCode** 项目的支持。组件处理系统的改进提高了类型安全性。还包括对Vulkan、OpenGL、Linux和OpenXR的众多 **性能和稳定性修复**。 团队已经在开发 Stride 4.4,重点是进一步的跨平台支持和着色器编译改进,并欢迎社区贡献——特别是来自在.NET、移动和XR方面有技能的开发者。

## C#开发者游戏引擎选项 这次Hacker News讨论围绕着一位初学者C#开发者选择游戏引擎来创建小型2D概念验证的问题。比较了几个引擎: **Unity**功能强大,但使用较旧的C#版本和独特的Mono运行时。**Godot**很有前景,具有出色的原生C#支持(过去曾获得微软赞助),但使用C#进行Web/移动构建仍处于实验阶段。在Godot中切换GDScript和C#非常简单。**MonoGame**稳定且不断更新,非常适合快速、代码优先的原型设计。**Stride**是一个专注于VR的引擎,但目前缺少macOS支持。 贡献者强调**Godot**和**MonoGame**是初学者的有力竞争者。MonoGame提供最少的样板代码和灵活性,而Godot提供流畅的C#开发体验。**Raylib**也被建议作为2D游戏的简单选项。 讨论还涉及**Bepu Physics**引擎,该引擎因其性能而受到赞扬,但其集成复杂性也值得注意。最终,最佳选择取决于平台要求和期望的抽象级别。

启用 JavaScript 和 Cookie 以继续。

这个Hacker News讨论围绕Brian Eno的《Ambient 1: Music for Airports》和更广泛的环境音乐类型。原始帖子链接到一篇关于该专辑创作的文章。 评论者分享了类似艺术家的推荐,如William Basinski(尽管有些人质疑《The Disintegration Loops》背后的叙述),Stars of the Lid和Biosphere。 许多人强调了简单声音和循环技术的重要性,并将Eno的方法与复杂的数字音乐制作形成对比。 一个反复出现的主题是叙述在欣赏环境音乐中的作用,一些人认为专辑背后的故事(如Eno和Basinski的作品)极大地促成了它们的流行。 另一些人讨论了开源音乐软件的挑战和潜力,以及对更用户友好界面的渴望。 许多用户贡献了大量的播放列表和电台推荐(如SomaFM和BlueMars),供那些希望进一步探索该类型的人参考,展示了一个充满活力的环境音乐爱好者社区。 最终,该帖子庆祝了Eno的影响力,并探索了环境和实验音乐的多样景观。

## Windows 更新摘要 此版本正在逐步向用户推出,包含对整个操作系统的大量改进和修复。**Recall** 获得个性化主页,可快速访问最近的活动和常用应用,以及快照筛选选项。**点击即可操作** 提供交互式教程,以更快地完成任务。 增强功能扩展到隐私保护,包括重新设计的权限提示、通知中心中带有秒数的更大时钟回归,以及任务栏搜索的网格视图。**锁屏小组件** 现在更加可定制,并且在所有地区可用。**文件资源管理器** 获得上下文菜单分隔符和工作/学校帐户的人员图标。**Windows Hello** 具有重新设计的界面,用于密码密钥和改进的面部/指纹识别。 其他更新包括对 **设置**(激活提示、AI 应用控制、Copilot 集成)、**任务管理器**(标准化 CPU 指标)和 **小组件**(多个仪表板、更新的发现源)的改进。**面向企业的 Windows 备份** 现在已正式发布。 多个修复解决了与核心系统组件(如 dbgcore.dll 和 Kerberos)相关的崩溃问题,以及对音频、登录过程和实时字幕的改进。 PowerShell 2.0 将在未来的更新中移除。

Replicate,一个生成式AI平台,已被Cloudflare收购。Replicate成立于2019年,旨在通过简化部署,使开发者更容易获取强大的AI模型——通过Cog工具和Replicate平台本身,抽象机器学习和GPU管理的复杂性,从而实现AI的民主化。 该公司随着Stable Diffusion的发布而受到关注,并成为创新AI应用中心。然而,Replicate意识到现代AI应用需要的不仅仅是模型推理,还包括完整的服务栈。 加入Cloudflare将使Replicate能够实现其构建完整AI基础设施层的愿景,利用Cloudflare的网络、无服务器函数(Workers)和存储解决方案,提供更快、更高效的AI体验——包括边缘计算和简化的模型流水线。Replicate为率先提供生成式AI服务并建立关键行业标准而感到自豪。

## Replicate 被 Cloudflare 收购:摘要 AI 模型托管平台 Replicate 正在被 Cloudflare 收购。官方理由侧重于利用 Cloudflare 的规模和基础设施,但许多评论员质疑像 Replicate 这样的独立 AI 中间件公司的长期可行性。 许多用户指出,技术能力强的初创公司通常会迅速摆脱这些“过渡性”解决方案,选择通过 FastAPI 和云存储等工具直接控制。 此次收购对 Cloudflare 而言似乎具有战略意义,可能使其成为边缘 AI 推理的关键提供商,尤其适用于小型模型。 一些人推测,此次收购主要是一种“收购人才”——收购 Replicate 的团队而非其产品,尽管财务细节尚未披露。 讨论强调了对中心化以及 Cloudflare 过去发生过的大规模中断事件的担忧,引发了人们对依赖单一提供商提供关键互联网基础设施的风险的质疑。 最终,此举表明 AI 领域正在进行整合,大型公司正在吸收有前景的初创公司,以增强自身的产品。

更多

联系我们 contact @ memedata.com