Go Optimization Guidea year agohttps://goperf.dev/《Go应用优化指南》帮助开发者编写更快速、更高效的Go应用程序。Go语言提供了性能调优工具,包括内存复用、分配控制和高效率网络通信。常见的Go性能优化模式包括使用sync.Pool、避免不必要的内存分配以及高效错误处理。后续主题将涵盖Go高性能网络编程、并发连接管理及深度性能调优。本系列面向后端工程师、延迟敏感系统开发者以及正在迁移至Go语言的团队。
An Interview with Zen Chief Architect Mike Clarka year agohttps://www.computerenhance.com/p/an-interview-with-zen-chief-architectZen微架构在八年内将AMD的CPU市场份额从10%提升至25%Zen首席架构师Mike Clark讨论x86与ARM指令集的灵活性,指出两者通过适当微架构都能实现相近的每瓦性能x86指令集的变长指令和更强内存模型不会从根本上限制性能或能效更大页尺寸(如16k或64k)可通过减少TLB压力使Zen架构受益,但4k页仍可通过页合并等技术管理CPU与GPU因侧重低延迟与吞吐量工作负载,缓存行和寄存器大小不同(64字节 vs 128+字节)由于带宽限制,分散/聚集操作在CPU上具有挑战性,但软件更广泛采用可推动硬件改进正确使用时非临时存储能超越常规存储,因其减少缓存污染并简化内存子系统操作现代CPU流水线在概念上与旧设计(如Bulldozer)相似,但专有优化使详细原理图无法公开像`sqrtpd`这样的长延迟指令由调度器处理,其非流水线化执行避免与其他操作重叠鼓励软件开发人员采用新ISA特性(如更宽向量、AI指令)并提供反馈以指导未来硬件设计
Disk I/O bottlenecks in GitHub Actionsa year agohttps://depot.dev/blog/uncovering-disk-io-bottlenecks-github-actions-ci磁盘I/O瓶颈会显著影响CI流水线性能,且常被忽视iostat和fio等工具可有效监控和基准测试CI流水线中的磁盘性能GitHub默认的ubuntu-22.04运行器提供额外vCPU但不会提升磁盘性能在流水线执行期间监控磁盘性能对识别瓶颈至关重要使用iostat监控依赖项安装时的磁盘饱和度可暴露性能问题缓存操作(如解压依赖项)会暴露磁盘I/O瓶颈,尤其涉及大量小文件时磁盘吞吐量和IOPS是理解磁盘性能限制的关键指标使用fio进行基准测试可验证是否达到吞吐量或IOPS上限通过矩阵策略在不同运行器上测试工作流有助于确定最优性能配置Depot Ultra Runner提供RAM磁盘缓存和高端CPU,实现超快磁盘I/O性能提升
Using Token Sequences to Iterate Rangesa year agohttps://brevzin.github.io/c++/2025/04/03/token-sequence-for/文章讨论了C++ Ranges中的效率问题,特别是像filter和take_while这样的视图会执行冗余操作。提出了两种解决方案:提供内部迭代以获得更好性能的Flux库,以及一种利用令牌序列进行代码注入的理论方法。Flux展示了内部迭代如何通过避免冗余检查和优化空间使用来减少开销。令牌序列方法(仍在设计中)允许动态生成最优循环结构,展现了零开销抽象的潜力。示例突出了常见范围操作的性能问题,以及替代方案如何缓解这些问题。文章最后思考了C++ Ranges的未来方向,包括可能支持内部迭代的语言和库增强功能。
Pdeathsig is almost never what you wanta year agohttps://www.recall.ai/post/pdeathsig-is-almost-never-what-you-want作者的任务是优化Recall.ai平台的输出媒体启动延迟问题。输出媒体功能通过沙盒环境中的Chromium浏览器(使用Bubblewrap工具)将客户提供的网页渲染为音视频流供机器人使用。最初由于激活输出媒体时Chromium需要消耗大量资源启动,导致延迟高达12秒。解决方案计划在机器人启动时预加载Chromium以减少延迟。测试发现尽管父进程仍在运行,Chromium会意外终止。调试发现根本原因是Bubblewrap的--die-with-parent参数使用了Linux的PR_SET_PDEATHSIG机制。PR_SET_PDEATHSIG跟踪的是父线程而非父进程,这与Tokio运行时线程管理方式产生冲突。Tokio动态线程停放和回收机制导致Chromium被提前终止。移除--die-with-parent参数后问题解决,延迟降至2-3秒。该优化方案通过大幅缩短等待时间显著提升了客户体验。
New Apache Cassandra Release Saves 400% IOPSa year agohttps://www.simplyblock.io/blog/apache-cassandra-release-5-0-4-major-compaction-...Apache Cassandra 5.0.4 于2025年4月10日发布,针对远程附加存储(如亚马逊EBS)进行了性能优化。新的压缩算法降低了IOPS使用率并提高了吞吐量,解决了长期存在的瓶颈问题。基准测试显示,采用新压缩逻辑后吞吐量提升高达3倍,IOPS使用率显著降低。由于减少了等待pread的时间,读取延迟得到改善,吞吐量也有所提升。Simplyblock通过提供高性能、可扩展的存储解决方案,与Cassandra的改进形成互补。Simplyblock的特性包括多挂载和纠删码以减少存储占用,为敏感工作负载提供超低延迟,以及为开发环境提供即时克隆功能。Cassandra 5.0.4的发布凸显了匹配现代分布式数据库的可扩展存储架构的重要性。
Get Out of My Heada year agohttps://getoutofmyhead.dev/移除网站<head>部分中不必要的标签以提升性能通过清理<head>区块内容来增强网站可访问性通过优化<head>内容使网站更加环保节能
JavaScript Views, the Hard Way – A Pattern for Writing UIa year agohttps://github.com/matthewp/views-the-hard-way《以艰难方式编写JavaScript视图》是一种无需React或Vue等框架即可创建可维护、高性能视图的模式。关键优势包括:性能(直接命令式代码)、零依赖、跨框架可移植性、通过严格约定实现可维护性、广泛浏览器支持、更易调试以及函数式编程风格。该方法通过模板、DOM变量、状态变量、DOM更新函数、状态更新函数和初始化逻辑来结构化视图。模板使用纯HTML并预留动态内容占位符,为避免浏览器兼容性问题而放弃插值语法。`init`函数作为视图实例的闭包,通过明确定义的模块来管理DOM和状态更新。诸如用'Node'后缀命名DOM节点、用'set'前缀命名状态更新函数等约定,有助于保持代码清晰度和可调试性。状态更新与DOM更新分离,确保高效渲染和明确的变更追踪。该模式能以最小开销创建可复用、框架无关的组件。
Optimizing Heap Allocations in Go: A Case Studya year agohttps://www.dolthub.com/blog/2025-04-18-optimizing-heap-allocations/Go语言中一个性能退化问题是由重构导致的,该重构无意中造成了堆分配而非栈分配。问题根源在于方法中使用了值接收器,这导致在堆上创建了不必要的接收器副本。Go语言的逃逸分析会决定变量应该分配在栈还是堆上,但它的判断可能偏保守,有时即使栈分配是安全的也会选择堆分配。修复方案是将方法改为使用指针接收器,消除了不必要的副本,使性能提升了30%。理解Go语言的内存分配行为,并使用`go build -gcflags "-m"`等工具可以帮助发现和优化性能问题。在性能关键代码中,优先使用指针接收器以避免不必要的副本和潜在的堆分配问题。
Hyperscaling Have I Been Pwned with Cloudflare Workers and Cachinga year agohttps://www.troyhunt.com/closer-to-the-edge-hyperscaling-have-i-been-pwned-with-...Have I Been Pwned (HIBP) 已升级使用Cloudflare边缘缓存技术实现更快速搜索通过Cloudflare边缘节点缓存技术,延迟降低99%,可用性提升且成本削减HIBP现采用SHA-1哈希邮箱前六位字符作为搜索缓存键,总计约1600万种可能前缀组合当新数据泄露事件加载或用户选择退出时触发缓存刷新,短期内会增加源站流量及成本API密钥验证仍是性能瓶颈,因其必须访问位于美国西部的源服务器Cloudflare缓存储备系统平均每秒处理超3900次Pwned密码查询,峰值可达1.7万次/秒
Threaded Codea year agohttps://www.complang.tuwien.ac.at/forth/threaded-code.html线程化代码是一种实现虚拟机解释器的技术,最初由James R. Bell在1973年描述。子程序线程化代码涉及表示虚拟机指令的代码地址序列,但按原始定义并不属于解释性执行。直接线程化代码使用指令指针执行指令序列,每条指令通过共享或独立的NEXT例程跳转到下一条指令。间接线程化代码通过代码字段和参数字段引入间接层,允许相似指令共享代码但使用独立数据。切换线程化采用switch语句实现线程化代码,可能导致现代CPU分支目标缓冲区的高误预测率。调用线程化将每条虚拟机指令表示为函数,使用全局变量作为寄存器,其效率可能不如切换线程化中的局部变量。不同线程化技术性能各异,由于分支预测效率优势,直接和间接线程化通常比切换或调用线程化性能更优。实现可移植的线程化代码可借助GNU C扩展构建机器无关引擎,或通过堆栈效应符号自动生成代码。历史背景包括代码字段的早期应用,以及从字符串解释到现代实现的线程化技术演进过程。
Optimizing Common Lispa year agohttps://www.fosskers.ca/en/blog/optimizing-common-lisp作者使用SBCL中的统计性能分析工具sb-sprof,对其Common Lisp解析器组合子库进行了CPU和内存分配热点的定位。通过性能分析,他们将parcom/json模块的运行速度提升了3倍,并将内存分配减少了25倍。关键优化措施包括:用切片替代列表分配、使用schar实现更快的字符串访问、利用multiple-value-bind减少垃圾回收。同时还采用了局部变量的栈内存分配和lambda闭包的缓存机制,进一步降低了内存使用。本文强调了性能分析对优化指导的重要性,并证明了解析器组合子在Common Lisp中既能保持优雅性又能实现高性能。
'I paid for the whole GPU, I am going to use the whole GPU'a year agohttps://modal.com/blog/gpu-utilization-guideGPU是专为高吞吐量数学运算(尤其是CPU难以胜任的矩阵乘法)设计的专用协处理器GPU利用率因其高昂成本成为关键指标,主要包括分配利用率、内核利用率和模型浮点运算利用率三个维度GPU分配利用率衡量GPU运行应用代码时间与空闲时间的比例,受经济因素和运营策略影响Modal平台通过聚合多云资源供需,缩短GPU启动延迟,从而提升分配利用率GPU内核利用率指GPU执行内核代码的时间占比,主机端开销或任务供给不足常导致该指标低下模型浮点运算利用率(MFU)反映GPU理论算力带宽的使用效率,需优化内核和内存访问才能实现高MFU实现高MFU具有挑战性,当前顶尖训练任务的MFU仅达20-41%,而推理任务可能获得更高效率提升GPU利用率需多管齐下:优化应用代码、降低主机开销、使用高效内核,并借助Modal等平台改善资源分配
Prepare your apps for Google Play's 16 KB page size compatibility requirementa year agohttps://android-developers.googleblog.com/2025/05/prepare-play-apps-for-devices-...Google Play允许开发者向全球Android设备分发应用和游戏。Android 15引入对16KB内存页面大小的支持,以优化新设备的性能。自2025年11月1日起,所有针对Android 15+的新应用或更新必须支持16KB页面大小。16KB页面大小可提升性能,不支持的应用可能在未来的设备上出现故障。React Native、Flutter和Unity等流行SDK已支持16KB,Unreal Engine的支持即将推出。许多应用已兼容16KB,其他应用的调整预计较为简单。开发者可通过Play Console的应用包资源管理器检查应用包的合规性。在16KB环境中测试应用可确保最佳性能和用户体验。详细技术指南可参阅Google十二月的博客文章和官方文档。
21 GB/s CSV Parsing Using SIMD on AMD 9950Xa year agohttps://nietras.com/2025/05/09/sep-0-10-0/Sep 0.10.0版本在AMD 9950X(Zen 5)上实现21 GB/s的CSV解析速度性能在不到两年内从~7 GB/s(0.1.0)提升至~21 GB/s(0.10.0)AVX-512优化和硬件升级(Zen 3到Zen 5)共同促成速度飞跃新型AVX-512-to-256解析器规避了.NET 9.0的次优AVX-512代码生成,实现更高速率多线程Sep在9950X上以72毫秒(8 GB/s)解析100万行数据跨平台Vector256解析器性能媲美AVX2,确保广泛兼容性
$20K Bounty Offered for Optimizing Rust Code in Rav1d AV1 Decodera year agohttps://www.memorysafety.org/blog/rav1d-perf-bounty/正式宣布rav1d——一款基于Rust语言开发的高安全性高性能AV1解码器,由Immunant公司合作开发rav1d现已完成全部开发,通过所有测试(性能与C语言编写的dav1d相当),并可在Chromium浏览器中编译运行当前挑战:rav1d解码速度比dav1d慢约5%,这影响了实际应用,团队正在推进优化工作设立2万美元奖金池,激励开发者实现rav1d与dav1d的性能持平(限特定国家/地区居民参与)竞赛规则要求:优化必须针对Rust代码、编译器或标准库,不得修改共享的汇编优化部分参赛者需将改进代码合并至相关开源项目,并遵循竞赛提交流程(采用开源许可协议)奖金将根据性能提升幅度按比例分配给核心贡献者,最终裁决权由ISRG保留
Community Stewardship of Faster CPythona year agohttps://discuss.python.org/t/community-stewardship-of-faster-cpython/92153微软对Faster CPython的支持已被取消,这将影响Python的性能改进进度。得益于众多个人与组织的贡献,Python 3.14版本比3.10版本快20-40%。未来可选方案包括寻找新赞助方、终止实验性工作,或由社区自主管理继续推进。提议将Faster CPython转为社区自治模式,成立无决策权的性能工作组(WG)。建议建立PSF所有的基准测试基础设施,并探索以可维护性优先于峰值性能的JIT设计方案。参照类型标注理事会(PEP 729)模式,组建社区理事会负责冲突调解与技术方向制定。提名首届社区工作组成员,强调多元背景及对项目的实质性贡献。指出社区主导项目的成功潜力,并举证PyPy等案例及现有贡献者基础。提议成立非正式工作组替代原有企业主导的协调机制,促进CPython性能优化的协作与讨论。
More than you ever wanted to know about font loading on the web (2021)a year agohttps://www.industrialempathy.com/posts/high-performance-web-font-loading/文章探讨了网页字体加载的挑战及其对核心网页指标(特别是最大内容绘制时间LCP和累计布局偏移CLS)的影响建议使用`font-display: optional`来提升LCP和CLS,确保文本快速渲染并避免布局偏移分析了`font-display: optional`不适用的场景,例如当不存在合适备用字体时(如图标字体)探讨了`preload`与`font-display: optional`配合使用的潜在带宽消耗与性能取舍强调浏览器缓存行为的变化,建议自托管字体或其加载CSS以避免跨域请求介绍了一个能自动匹配备用字体与自定义字体的工具,减少自定义字体加载时的布局偏移提及了`size-adjust`、`ascent-override`和`descent-override`等新标准可实现更精准的字体匹配总结指出:结合`font-display: optional`与自托管CSS能优化LCP和CLS,同时新标准提供了更多解决方案
Slack, Notion, and VSCode Improved Electron App Performancea year agohttps://palette.dev/blog/improving-performance-of-electron-apps通过适当优化,Electron应用可以达到媲美原生应用的性能表现主要性能挑战:启动缓慢和交互性能不佳关键优化策略包括使用打包工具(Webpack、esbuild、Vite)替代同步的`require()`调用通过基于路由的代码分割和异步导入延迟非关键资源加载将计算密集型任务迁移到WebAssembly或原生模块以获得更好性能采用V8快照减少初始化时间(Atom和VSCode团队已验证该技术)监控终端用户性能指标:点击延迟、按键延迟、滚动延迟等实施生产环境JavaScript性能分析以定位和修复性能瓶颈Notion通过Palette等生产环境分析工具将性能指标提升了15-20%
A SwiftUI Runtime in C++a year agohttps://www.kulve.org/blog/swiftui_runtimeKulve的SwiftUI运行时是一个用C++编写(含少量Objective-C脚手架)的跨平台、多线程、全异步运行时系统该运行时专为优化Kulve性能而开发,旨在为Twitch提供轻量、快速且高效的体验,同时延长Apple芯片设备的电池续航性能优化包含三个关键步骤:消除数据拷贝、维护单一数据实例以避免所有权问题、通过NotificationCenter连接运行时与SwiftUI运行时使用void*指针实现类型擦除和高效内存管理,避免了std::any或std::variant的开销通过NotificationCenter实现运行时与SwiftUI的无拷贝直连通信,同时精确控制数据生命周期运行时内置线程管理、数据填充和消息传递机制,重点防范竞态条件和空指针解引用问题采用延迟释放策略确保SwiftUI视图完成操作后再释放数据源该运行时已随近期AppStore上架版本提交,开发者欢迎探讨其实现细节