三角洲修改用户电源管理?过度防御性编程的罪与罚

今天刷b站刷到了UP主“凌清不是小臭猪”的视频《三角洲行动更改用户电源管理导致CPU睿频暴降玩什么都卡》,说三角洲会修改电脑的电源计划导致cpu降频。

问题的来源可能主要是出于英特尔13代与14代中部分型号缩缸故障,三角洲的程序员出于“防御性编程”的考量,提前考虑到了性能问题,并对这种情况做出预先的措施防范。

防御性编程是一种软件开发技术和编程理念,旨在通过在开发程序时加入各种预防措施,使程序在面对各种可能的错误输入、异常情况或恶意攻击时,仍能保持稳定运行,尽可能避免出现崩溃、数据丢失或其他不可预期的行为,从而提高软件的可靠性、稳定性和安全性。

而且三角洲程序员是使用注入注册表的方式,直接修改用户的电源管理计划,包括但不限于将用户电脑的异类策略改到0,线程调度策略被改到首选高性能,性能提升模式被改到高效率。甚至出于某些原因没有做CPU的条件筛选,使得AMD的CPU会受到影响。

图片来自于贴吧老哥

而且这种修改注册表的行为,会导致用户电脑在运行其他游戏时,也会受到很严重的降频和显卡占用率低等问题,直接结果就是玩其他游戏帧率暴降,潜在风险是修改CPU策略可能导致电脑黑屏或程序崩溃,因为AMD的很多cpu都没有大小核之分,自然不存在大小核调度问题,windows针对Inter多核的调度策略(异类线程调度)对AMD来说完全就是负优化。

可能会出现负载分配不均的问题,图为跑在单核上

我看很多UP主在视频教如何修改注册表把策略改回来,包括如何让三角洲不更改你的电源计划,我当然不建议普通玩家去捣鼓自己的注册表,修改出问题的话可能导致系统不稳定,出现各种错误和故障。今天主要是聊一聊防御性编程的问题。

防御性编程原则在工程界是普遍存在的,要求程序员要预见程序在什么地方可能会出现问题,然后创建一个环境来测试错误,当预见的问题出现的时候通知你,并执行一个你指定的损害控制动作,核心原则主要是风险识别和防御原则:

风险识别:将风险分为非系统性风险(如空指针异常、数据越界等,仅影响特定场景下的单次调用)和系统性风险(如死循环、分页查询 pageSize 过大等,可能导致整个服务不可用)。

防御原则:包括假设输入总是错误的并进行验证和清理;最小化错误影响范围;使用断言进行内部检查;编写清晰易懂的代码;持续进行测试以验证软件的正确性和稳定性。

充分考虑缓冲区溢出的问题

三角洲程序员采用这种离谱做法的初衷或许是为了让游戏在运行过程中更加稳定,这确实体现了防御性编程提前防范异常情况的特点。

然而,这种做法显然是 “好心办坏事” 。在实际操作中,没有充分考虑到不同 CPU 的差异性。不加筛选地通过注册表注入来修改电源管理计划,不仅没有达到预期的效果,反而给玩家带来了更多的麻烦。而且,修改注册表这种具有较高风险的操作,一旦出现错误,就可能引发系统不稳定,甚至导致电脑黑屏或程序崩溃,这与防御性编程提高软件可靠性和稳定性的初衷背道而驰。

更重要的是,对于游戏开发者来说,应该在修改前向用户进行充分的告知,让用户了解可能会发生的变化以及带来的影响,给予用户自主选择的权利。

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com