Tail Call Recursion in Java with ASM (2023)a year agohttps://unlinkedlist.org/2023/03/19/tail-call-recursion-in-java-with-asm/尾调用优化(TCO)通过重用当前栈帧来避免为递归调用分配新栈帧当最后一个操作是递归调用时就会发生尾递归,这种特性使其能够被优化Java虚拟机(JVM)使用包含局部变量和操作数栈的栈帧来处理方法调用ASM库允许通过字节码操作将递归调用转换为循环,从而在Java中实现TCO基准测试结果表明经过优化的尾递归方法性能优于未优化版本实际案例包括阶乘和求和计算,展示了TCO带来的性能提升
Crawl Order and Disordera year agohttps://www.marginalia.nu/log/a_117_crawl_order/搜索引擎爬虫需要很长时间才能完成,99.9%的爬取在4天内完成,剩余的0.1%需要一周时间。迁移到增量爬取数据后,内存需求下降了80%,可以执行更多爬取任务。爬虫限制每个域的并发任务数,以避免超过爬取速率被反爬软件拦截。学术类域名由于规模庞大且子域名众多,通常设有严格的爬取限制。最初的随机爬取顺序导致大型域名(通常是学术类)启动较晚,延迟了整体完成时间。尝试按子域名排序适得其反,导致对博客主机同时发起过多请求。增加了请求延迟的随机间隔,并修改排序策略优先处理子域名超过8个的域,从而优化了调度。未来可通过历史爬取时长或磁盘数据量进一步优化任务优先级排序。
Overengineered Anchor Linksa year agohttps://thirty-five.com/overengineered-anchoring锚点链接看似简单,但实现起来可能很复杂。解决方案包括添加额外内边距、偏移触发线以及转换触发点。提出了一种分数平移法来满足可到达性和标题顺序等条件。建议采用自定义映射函数,以最小化与理想触发线的偏差,从而提升用户体验。探索了SLSQP等优化技术来平衡锚点与章节的惩罚系数。定义约束条件以确保虚拟标题始终位于页面边界内并保持顺序。意识到分数平移法在超长页面上扩展性不足,从而催生出更智能的映射函数。最终方案采用平滑阶梯函数,根据标题位置实现调整系数的流畅过渡。这个方法被幽默地承认过度设计,但最终成就了一篇详实的技术博客。
Doing the Prospero-Challenge in RPythona year agohttps://pypy.org/posts/2025/04/prospero-in-rpython.htmlProspero挑战需要从数学公式渲染1024x1024图像,每个像素需7866次运算该公式采用SSA形式(静态单赋值形式),线性序列中每个变量只赋值一次,特别适合优化最初实现的基线解释器因高解析开销导致执行速度缓慢通过四叉树结构优化渲染,细分图像并利用范围分析简化公式编写了简单优化器进行区间分析和窥孔优化,但多数新增规则效果有限引入'需求信息'优化技术,仅关注结果符号位,成功减少25%运算量通过反向遍历标记有效操作实现死代码消除,提升执行效率使用Hypothesis进行随机测试,通过生成并最小化测试用例确保优化器正确性创建程序可视化图和八叉树递归图以辅助理解优化过程开发C语言版本探索musttail调用、SIMD指令和结构体内存优化带来的性能提升性能测试显示:带需求信息优化的C版本快于RPython实现,性能与Fidget相当
Dirty tricks 6502 programmers usea year agohttps://nurpax.github.io/posts/2019-08-18-dirty-tricks-6502-programmers-use.html文章介绍了一场Commodore 64编程竞赛,参赛者需用最少字节绘制两条线。选手提交带字节长度和MD5哈希的PRG文件,Philip Heron与Geir Straume以34字节并列冠军。C64默认图形模式中,屏幕RAM位于$0400,颜色RAM在$d800,$d020和$d021存储颜色设置。示例C代码通过硬编码斜率和屏幕RAM操作实现画线功能。6502汇编优化技巧包括循环展开、屏幕指针递进式移动和ROM例程调用。关键技巧包括:借用'上滚屏'ROM函数避免手动更新屏幕、自修改代码压缩体积、利用C64开机状态。参赛者通过覆写栈或BASIC热启动向量精简初始化代码,非常规控制流节省字节。位压缩画线算法和极限零页内存使用属于高阶优化手段。Philip Heron的34字节夺冠方案融合栈操作进入程序、间接索引寻址等多项技巧。赛后讨论催生出更精简版本,展现了极客社群的创造力。
Four Kinds of Optimisationa year agohttps://tratt.net/laurie/blog/2023/four_kinds_of_optimisation.html过早的优化可能有害,但过度拖延优化会导致挫败感。人类的乐观常误导我们,让我们误以为知道在哪里以及如何有效优化程序。严格的性能分析对于理解程序在不同场景下的表现至关重要。优化的四种主要解决方案:更好的算法、更好的数据结构、更低层次的系统实现,以及接受不够精确的解决方案。选择更好的算法需要理解上下文、输入特性以及性能权衡。更好的数据结构(如用于二分搜索的排序列表)可以显著提高性能。用更低级的语言重写可以提高速度,但通常需要付出大量时间和复杂性成本。接受不够精确的解决方案(如近似值或机器学习输出)可能是可行的优化策略。优化应平衡正确性、人力成本,以及知识的广度而非特定技术的深度。
Differentiable Programming from Scratcha year agohttps://thenumb.at/Autodiff/可微分编程是当前的研究热点,在机器学习和计算机图形学等领域具有重要应用价值。文章从基础微积分延伸到高维空间,系统阐释了微分概念,重点解析了梯度与方向导数的核心原理。详细探讨了基于梯度下降的优化方法,包括局部极小值与发散等常见挑战的应对策略。深入介绍了自动微分技术,分别对前向传播与反向传播两种模式进行了原理剖析。通过双数系统和计算图的具体实现案例,展示了导数计算的工程化实现方案。以图像去模糊处理为例,生动演示了如何运用可微分编程解决实际优化问题的完整流程。
Coding Neon Kernels for the Cortex-A53a year agohttps://destevez.net/2025/02/coding-neon-kernels-for-the-cortex-a53/文章详细介绍了针对Cortex-A53处理器优化NEON汇编内核的过程,核心运算是实现y[n] = ax[n] + b。Cortex-A53缺乏公开的指令时序文档,优化工作只能依赖经验法则和微观基准测试。Cortex-A53采用顺序执行架构并具备部分双发射能力,其指令时序可预测但对代码顺序敏感。在特定条件下,NEON指令可实现双发射,尤其是对独立NEON寄存器的64位半区进行操作时。L1d缓存的加载数据通路为64位,而存储数据通路为128位,这直接影响数据移动的优化策略。该内核的理论峰值性能为每个时钟周期完成一次y[n]计算,实现2FLOPs/周期的吞吐量。优化策略包括:将64位加载通路与128位运算/存储通路匹配,通过流水线隐藏结果延迟。使用prfm指令进行预取以最小化L1d缓存未命中,这种零周期开销的技术显著提升性能。手工汇编代码性能远超LLVM生成结果,后者未能针对Cortex-A53的特性进行优化。完整内核实现包含前导段、循环体和收尾段,配合预取机制使实际性能接近理论峰值。
Betterfox - about:config tweaks to enhance Mozilla Firefoxa year agohttps://github.com/yokoffing/BetterfoxBetterfox 是一个经过精心设计的偏好设置列表,旨在提升 Mozilla Firefox 的速度、隐私和安全性。应用 Betterfox 的步骤:备份配置文件,下载 user.js 文件,检查设置,并将文件放入 Firefox 配置文件夹。推荐的安装后步骤:使用 uBlock Origin 并启用 DNS 级别的保护。核心原则:极简主义、效率和隐私保护。包含的指南:Fastfox(速度优化)、Securefox(隐私保护)、Peskyfox(简洁界面)、Smoothfox(平滑滚动)。Betterfox 比 Zen、Midori、Waterfox 等 Firefox 分支的修改版本更有效。用户积极反馈表明,在速度、安全性和浏览体验方面有显著提升。感谢贡献者和团队,如 arkenfox、Ghostery 和 Waterfox 的支持。
Shortest walking tour to 81,998 bars in Korea – TSP solved in 178 daysa year agohttps://www.math.uwaterloo.ca/tsp/korea/index.html解决了韩国境内包含81,998个站点的最大规模旅行商问题(TSP)路网实例最优路线的总步行时间为15,386,177秒(178天1小时56分17秒)使用开源路由引擎OSRM计算了3,361,795,003个点对点行程时间结合LKH和Concorde算法求解最优方案,并应用割平面法打破了2021年2月荷兰57,912个站点路网的原有纪录计算工作于2024年12月至2025年3月在罗斯基勒大学与滑铁卢大学完成可通过交互式地图查看路线,支持显示站点标记与路径连线通过先进优化方法澄清了关于大规模TSP求解的常见误解鸣谢IBM CPLEX优化器、OpenStreetMap及韩国警察厅的技术支持
ePub Optimizer – an open source tool to compress, clean, and validate ePub filesa year agohttps://github.com/kiki-le-singe/epub-optimizer用于优化EPUB文件的Node.js工具,通过压缩HTML、CSS、图像并重新压缩归档文件在保持电子阅读器兼容性和EPUB规范合规性的同时显著减小文件体积工作流程包括在Mac的Pages中编写内容,导出为EPUB格式后使用脚本进行优化功能包含HTML/XHTML代码精简、CSS优化、图像压缩及字体子集化支持模块化修复脚本,可自定义EPUB和OPF结构需要Node.js 14+、Java Runtime Environment (JRE) 1.7+及pnpm包管理器包含完整的测试套件、代码检查、格式化及压缩流程提供可定制优化选项的命令行界面项目结构清晰,源代码、脚本和工具模块分离明确采用MIT许可证授权
Finding Paths of Least Action with Gradient Descenta year agohttps://greydanus.github.io/2023/03/05/ncf-tutorial/文章介绍了将物理学视为优化问题的视角,重点是通过最小化作用量来寻找最小作用量路径。与传统解析法和数值法不同,提出了一种利用梯度下降实现作用量最小化的创新方法。强调拉格朗日方法作为横跨物理学各领域的通用框架,能够描述多种物理系统。通过具体实现演示了梯度下降法在重力场中自由落体作用量最小化的应用。该方法成功收敛至预期抛物线轨迹,与传统常微分方程积分结果一致。未来研究方向包括探索更复杂系统与量子力学,以及作用量原理的历史意义和哲学内涵。
Why Momentum Works (2017)a year agohttps://distill.pub/2017/momentum/梯度下降是一种优化方法,被形象地描述为一个人沿着山坡最陡的路径缓慢而稳定地下山。动量法作为梯度下降的改进被引入,类比为一个沉重的球滚下山坡,它能平滑并加速下降过程,有助于克服震荡和局部极小值。对动量法的标准解释在行为描述上缺乏深度,表明需要更精确的模型来理解其动态特性。凸二次模型被提出作为简洁性与丰富性的平衡,它允许对动量法的局部动态进行封闭形式的理解。梯度下降的局限性被强调,包括收敛速度慢和对病态曲率的敏感性,这导致在某些方向上进展缓慢。动量法被提出作为梯度下降局限性的解决方案,通过引入记忆项来加速更新并改善收敛性。动量法的有效性体现在它对许多函数的二次加速以及在技术意义上的最优性,如Nesterov下界所示。分析扩展到多项式回归,展示了动量法和梯度下降如何与问题的结构(特别是特征值和鲁棒性方面)相互作用。早停作为一种启发式方法被讨论,它利用优化动态来防止过拟合,类似于正则化方法。探讨了一阶优化方法的极限,重点关注“世界上最糟糕的函数”情景,展示了这些方法固有的局限性。文章最后承认对动量法解释的持续探索以及优化技术进一步发展的潜力。
Adaptive Hashinga year agohttps://quotenil.com/adaptive-hashing.htmlELS 2024的演讲聚焦于通过自适应哈希改进通用哈希表,使其更快更健壮。哈希表理论常忽略实际应用中至关重要的常数因子,并假设使用随机哈希函数,而现实场景中多采用固定哈希函数。完美哈希针对固定键集优化哈希函数,但因缺乏灵活性或计算成本过高,不适用于通用场景。自适应哈希通过根据实际键使用情况动态调整哈希函数,减少冲突并提升缓存效率,从而优化性能。SBCL的自适应哈希实现从简单常量哈希函数起步,依据冲突率和表大小切换至更复杂的函数。对于EQ哈希表,SBCL在表扩容或冲突率上升时,会从线性搜索过渡到单位移位或Murmur等优化哈希函数。对于EQUAL哈希表,自适应哈希通过初始仅哈希键的部分内容来降低复合键的哈希成本,仅在冲突率高时扩展哈希范围。SBCL的自适应哈希已稳定运行近一年,在常规场景中提升速度,在特殊场景中增强健壮性。
Castle Engine improvements: physics upgrade, sphere casting, layers filteringa year agohttps://castle-engine.io/wp/2025/05/01/april-improvements-physics-upgrade-sphere...TCastleComponentFactory 现已注册为编辑器中的非可视化组件,使用更加便捷。Kraft 物理引擎已升级,包含新的优化和功能特性。新增方法 TCastleAbstractRootTransform.PhysicsSphereCast,用于物理系统中的球体投射检测。TCastleAbstractRootTransform.PhysicsRayCast 现在支持分层碰撞检测。新增可选项:通过禁用部分格式的编译支持来减小可执行文件体积。修复了 iOS 构建及 TestFairy 集成问题。改进未使用数据分析工具,新增可选文件清理功能。图像功能增强:支持直接加载至 TCastleImageTransform 及创建初始状态未定义的绘图图像。UrlEncode 和 UrlDecode 方法改为公开,便于 URL 构造。已确认兼容 Delphi 12.3 版本。
The Design of Compact Elastic Binary Trees (Cebtree)a year agohttp://wtarreau.blogspot.com/2025/03/on-design-of-compact-elastic-binary.html文章讨论了紧凑型弹性二叉树(cebtree)的开发与演进,这是对ebtree更节省空间的替代方案。2007年关于自组织树的初步研究催生了无需上行链接或深度关系的数据排列构想,重点关注插入和删除效率。通过探索分支间异或运算优化,减少了存储需求并提升了查找效率。2014年在'水滴分配器'内存分配器中的有限实现证明:仅需每个节点两个指针的紧凑树结构具有可行性。性能与可扩展性挑战曾导致开发暂停,但2020年疫情封锁期间和2023年的重新发力最终产出可用版本(v0.1和v0.2)。文章重点介绍了cebtree在haproxy变量索引中的成功集成,显示出性能提升。未来工作包括完善文档、探索原子操作,以及可能与ebtree合并以增强功能。性能对比显示cebtree因额外内存读取通常慢于ebtree,但由于节点更小,对小键值操作更高效。
COBOL front-end added to GCCa year agohttps://gcc.gnu.org/gcc-15/changes.html#cobolGCC 15引入了多项改进,包括废弃特性、新编译器选项和增强的诊断功能-mabi=ilp32和-fdiagnostics-format=json选项被废弃,推荐使用SARIF格式输出机器可读的诊断信息C/C++联合体初始化行为变更,要求显式零初始化填充位-O2优化级别增强,改进了未知循环次数的处理,但特定场景下仍限制向量化新增OpenMP 6.0特性支持,包括self_maps子句、unified_shared_memory及多种分配器Ada/SPARK语言改进,新增'Round和'Super等属性及Finalizable等特性新增-Wtrailing-whitespace和-Wheader-guard等警告选项以提升代码质量检查支持C23特性,包括#embed指令、__STDC_VERSION__更新及__builtin_stdc_rotate_left等新内置函数C++标准库增强,新增std::flat_map/std::flat_set容器及std::format改进Fortran更新包含新内置函数、无符号模数整数及.mod文件格式兼容性变更gccrs的Rust支持改进,包括错误处理优化、let-else语法支持及特化功能ARM架构支持扩展,新增Armv9.5-A及多款新扩展指令集AVR新增signal(num)/interrupt(num)函数属性和__flashx地址空间支持x86架构更新AMX扩展编译开关、AVX10.2支持及旧特性废弃诊断系统改进,包括SARIF输出增强、源码位置追踪优化及新libgdiagnostics库
Time Between The Lines: how memory access affects performance (2015)a year agohttps://bitbashing.io/memory-performance.html现代硬件内存层次结构使得内存访问模式显著影响程序性能传统复杂度分析假设内存访问均匀,这与具有多级缓存的现代硬件实际情况不符缓存和预取等硬件优化技术利用空间局部性加速顺序内存访问实验表明由于缓存效率,顺序内存访问速度远快于随机或间接访问通过优化数据布局(如将相关数据分组)可减少缓存未命中,从而显著提升性能缓存未命中较少的算法可能优于理论更快但内存访问模式不佳的算法
2.5D Rendering on PlayDatea year agohttps://www.ligeiagames.com/ligeia-blog/castle-kellmore-rendering凯尔莫尔城堡采用了类似《德军总部3D》的光线投射渲染系统,并针对Playdate掌机硬件进行了优化游戏使用C++编写,采用全整数渲染系统,运用16.16定点数学运算来保障性能光线投射技术通过从玩家位置发射射线来计算墙体距离,并渲染垂直跨度的墙面游戏包含地板和天花板渲染以增强沉浸感,采用水平条带绘制方式提升效率精灵物体通过垂直跨度渲染并施加性能约束,由此形成独特的美学风格关键优化包括减少可更新屏幕区域、每帧仅渲染部分屏幕内容,以及最小化像素重复绘制采用每像素列深度缓冲区来管理绘制顺序和遮挡关系,无需完整深度缓冲运用分摊渲染技术,通过多帧更新屏幕不同区域来维持性能,并针对快慢移动采用差异化处理方案
Engineering Design Optimization Textbooka year agohttps://mdobook.github.io/关于优化理论与算法的高级教材,包含实用技巧和工程实例提供可免费下载的PDF版本,含浅色与深色两种主题印刷版可通过剑桥大学出版社或亚马逊购买附赠包含练习代码、案例和数据的资源库部分章节配有录播讲座视频欢迎通过指定邮箱链接提交反馈、评论及勘误提供规范的文献引用格式说明