三角洲修改用戶電源管理?過度防禦性編程的罪與罰

今天刷b站刷到了UP主“凌清不是小臭豬”的視頻《三角洲行動更改用戶電源管理導致CPU睿頻暴降玩什麼都卡》,說三角洲會修改電腦的電源計劃導致cpu降頻。

問題的來源可能主要是出於英特爾13代與14代中部分型號縮缸故障,三角洲的程序員出於“防禦性編程”的考量,提前考慮到了性能問題,並對這種情況做出預先的措施防範。

防禦性編程是一種軟件開發技術和編程理念,旨在通過在開發程序時加入各種預防措施,使程序在面對各種可能的錯誤輸入、異常情況或惡意攻擊時,仍能保持穩定運行,儘可能避免出現崩潰、數據丟失或其他不可預期的行爲,從而提高軟件的可靠性、穩定性和安全性。

而且三角洲程序員是使用注入註冊表的方式,直接修改用戶的電源管理計劃,包括但不限於將用戶電腦的異類策略改到0,線程調度策略被改到首選高性能,性能提升模式被改到高效率。甚至出於某些原因沒有做CPU的條件篩選,使得AMD的CPU會受到影響。

圖片來自於貼吧老哥

而且這種修改註冊表的行爲,會導致用戶電腦在運行其他遊戲時,也會受到很嚴重的降頻和顯卡佔用率低等問題,直接結果就是玩其他遊戲幀率暴降,潛在風險是修改CPU策略可能導致電腦黑屏或程序崩潰,因爲AMD的很多cpu都沒有大小核之分,自然不存在大小核調度問題,windows針對Inter多核的調度策略(異類線程調度)對AMD來說完全就是負優化。

可能會出現負載分配不均的問題,圖爲跑在單核上

我看很多UP主在視頻教如何修改註冊表把策略改回來,包括如何讓三角洲不更改你的電源計劃,我當然不建議普通玩家去搗鼓自己的註冊表,修改出問題的話可能導致系統不穩定,出現各種錯誤和故障。今天主要是聊一聊防禦性編程的問題。

防禦性編程原則在工程界是普遍存在的,要求程序員要預見程序在什麼地方可能會出現問題,然後創建一個環境來測試錯誤,當預見的問題出現的時候通知你,並執行一個你指定的損害控制動作,核心原則主要是風險識別和防禦原則:

風險識別:將風險分爲非系統性風險(如空指針異常、數據越界等,僅影響特定場景下的單次調用)和系統性風險(如死循環、分頁查詢 pageSize 過大等,可能導致整個服務不可用)。

防禦原則:包括假設輸入總是錯誤的並進行驗證和清理;最小化錯誤影響範圍;使用斷言進行內部檢查;編寫清晰易懂的代碼;持續進行測試以驗證軟件的正確性和穩定性。

充分考慮緩衝區溢出的問題

三角洲程序員採用這種離譜做法的初衷或許是爲了讓遊戲在運行過程中更加穩定,這確實體現了防禦性編程提前防範異常情況的特點。

然而,這種做法顯然是 “好心辦壞事” 。在實際操作中,沒有充分考慮到不同 CPU 的差異性。不加篩選地通過註冊表注入來修改電源管理計劃,不僅沒有達到預期的效果,反而給玩家帶來了更多的麻煩。而且,修改註冊表這種具有較高風險的操作,一旦出現錯誤,就可能引發系統不穩定,甚至導致電腦黑屏或程序崩潰,這與防禦性編程提高軟件可靠性和穩定性的初衷背道而馳。

更重要的是,對於遊戲開發者來說,應該在修改前向用戶進行充分的告知,讓用戶瞭解可能會發生的變化以及帶來的影響,給予用戶自主選擇的權利。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com