画面の明るさスクリプトの実行速度を向上

画面の明るさスクリプトの実行速度を向上
xrandr --output LVDS-1 --brightness $(bc -l <<<"$(sed 's/Brightness: //' <<<$(xrandr --prop --verbose | grep Brightness)) $(if [ "$1" = "+" ];then echo +;else echo -;fi) 0.1")

現在、このコードはArchシステムのXFCEでキーボードショートカットとして設定されており、明るさを0.1ノッチの上下に調整するのに適しています。唯一の問題は、実行に1秒かかりますが、何回か押すと悪いことになり、コンピュータ全体の速度が遅くなる可能性があります。

コードをどのように改善しますか? (私はシェルスクリプトに最初に触れたので、私が書いたコールドコーディングコードの最適化を調べるために部分的に要求しています。)

編集:わかりました 、だから私はdrawbenn のプロファイリングアドバイス
に従いました


まあ、クエリするのが最大の問題です。現在の明るさレベルをいくつかのファイルに保存し、ショートカットキーが次のコードを実行するように変更しました。

#!/bin/bash
val=$(猫~/.bright_key_folder/lvl)
if ( [ "$1" == "+" ] && [[ $(bc -l ~/.bright_key_folder/lvl
    xrandr --output LVDS-1 --brightness$(cat ~/.bright_key_folder/lvl)
elif ( [ "$1" == "-" ] && [[ $(bc -l 0") == 1 ]] )
それから
    bc -l ~/.bright_key_folder/lvl
    xrandr --output LVDS-1 --brightness$(cat ~/.bright_key_folder/lvl)
フィリピン諸島

次に、起動時に明るさとファイル値の両方を1にリセットします。

ベストアンサー1

まあ、まず3つの別々の外部プログラムを実行していますが、1つで十分です。awkたとえば、すべての解析と算術を実行できます。

xrandr --output LVDS-1 --brightness $(xrandr --prop --verbose | 
    awk "/Brightness:/{print \$2 $1 0.1; exit}")

awkスクリプトはexit出力全体を解析し、xrandr --prop --verbose最初の一致後に終了する必要がないことを保証しますBrightness:。その後、awkコマンドは二重引用符で囲まれているため、スクリプト$1のパラメータに展開され、\$22番目のフィールドはawkエスケープされて引用されます。

より高速なシェルを試すこともできます。デフォルト値がある場合は、bash実行スクリプトを試してくださいdash

おすすめ記事