効率モードの解除
2025.05.15
Microsoftが追加したクソ機能、効率モード。
今さらではありますが、かなり煩わしい。

一番影響を受けるのが、ブラウザを使った時。
余計な事してくれたな(;´Д`)

これに関して解除方法を模索しました。

まずはEDGEの効率モードを止めたい。
ネットですぐに出てくるのはブラウザの設定での話。



ブラウザの設定画面を開き、システムとパフォーマンスタブを開く。
その中にある一番上のスイッチ(赤丸の部分)をオフにすればokのはずなのだが、
説明に書かれている通り
「Windowsの効率モードがまだアクティブであり、デバイスリソースを節約するために
  機能している可能性があります。」


ええ、確かに動いていますよ。スイッチなんてないのと同じです。
そして
EDGEのランタイムともいえるWebview2を使っているアプリに関しても、まったく効果がない。
自分が作ったアプリは全滅じゃないか(;´Д`)


幸いに私が使っているWindows11はPro レジストリで解決する方法があるらしい。

キー:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge
または HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge

名前:EfficiencyModeEnabled
種類:REG_DWORD
データ:0

これを書き込めばEDGEに関してだけ永続的に無効にになるらしい。

キー:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge\Recommended
   または HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\Recommended

このキーじゃないとだめって話もあった。
両方試してみる



うまくいかん・・・

HKEY_LOCAL_MACHINE\SYSTEM\
  CurrentControlSet\
   Control\Power\
    PowerSettings\
     54533251-82be-4824-96c1-47b60b740d00\
      be337238-0d82-4146-a960-4f3749d470c7

このレジストリのAttributesの値を2に変えるという方法もありました。
これも完全に無効するには至らない。

海外の記事もいろいろ見たけど、
完全にOFFにする方法は見当たらないようだ。
いやなら古い21H2バージョンをを使えって結論・・・ おい(;´Д`)
21H2はサポート終了してるし、汚いよMicrosoft。



直接ではなくとも間接的な対応として以下のものがありました。

解決策として最も簡単な方法は、
Windowsの設定メニューを使用することです。
以下の手順に従ってください:

1: タスクバーのWindowsロゴアイコンを右クリックして、メニューを開く。
2: 「ファイル名を指定して実行」を選択し、「control」を打ち込んで実行。
3: 開いたコントロールパネルの表示方法を小さいアイコンにし、「電源オプション」を実行する
4:「システム設定」で「電源とバッテリー」タブをクリックする。
5: 自分が良く使う電源プランの「プラン設定の変更」を選択し、"詳細な電源設定の変更 "をクリックする。
6:「詳細設定」タブで、「プロセッサの電源管理」セクションまでスクロールダウンし、展開します。
7: 「プロセッサの電源管理」セクションの下に、「最小プロセッサ状態」というオプションがあります。
その横にある「+」アイコンをクリックして、サブメニューを展開します。
8: 「バッテリ駆動」と「電源に接続」の両方のオプションの値を、
デフォルトの「5%」から「100%」に変更する。
9: "適用 "をクリックし、次に "OK "をクリックして変更を保存する。

これらの手順を完了すると、効率モード自体は無効になりませんが、
効率モード時の速度低下が収まり、
システムが本来の性能をフルに発揮できるようになります。
ただしこの設定は、バッテリーの寿命に影響を与える可能性があることに注意することが重要です。
したがって、バッテリーの駆動時間を延ばすために、バッテリー駆動でデバイスを使用する場合は、
デフォルトの数値を5%にすることをお勧めします。

あとは、効率モードを使いたくないアプリのショートカットに
--disable-features=UseEcoQoSForBackgroundProcess
を仕込むとそのアプリに限り効率モードは使われなくなるそうです。
しかし、WebView2のようにサブフレームで呼び出しているものに関しては無理っぽいです。
うちのプログラムでは解決には至りませんでした(;´Д`)



あとは、EDGEの設定画面で、特定のドメインに対して無効にするというのがあったので、
試してみました。
これも効果ないねぇ。

私の使う開発言語はDelphiですが、最後に試したのが、
WebView2コントロールのIsVisibleプロパティをtrueに設定すること。
お、これは自作アプリの解決策なりえるか?と思って試そうと思ったけど、
DelphiのEdgeBrowserコンポーネントにそんなプロパティねーよ(;´Д`)
詰んだ・・・


結局電源管理で場を濁すことに。
これでパフォーマンスが回復してるのか、ちょっと体感ではわからないのですが、
新しい方法を見つけるまではこれでいくしかあるまい・・(;´Д`)

- CafeNote -