スクリプトの速度を最適化する方法は?

昏睡

ログで警告を見つける必要があり、awk(以下のコード)でgrepを使用しています。しかし、VM(Ubuntu 18.04)では、最初にすべてのスクリプトを実行するのに約120秒(24.5 GBのログ)かかりました。その後、Ubuntuコンソールを使用してWin 10で実行しようとしましたが、20秒かかりました(誰かが理由を説明できる場合は、 !)。次に、コードにいくつかの変更を加え、実行速度は約500秒かかりました(私が行ったのはすべて変更でしgrep -v ".tmp" folder/.grep -vF "~$" folder/.)その後、元に戻そうとしましたが、速度は同じ〜500秒でした。また、Cygwinを使用してWin 10で同じスクリプトを実行しようとしましたが、結果は約400秒でした。なぜそれが起こったのか誰かが説明できますか?Winで実行速度が上がるのはなぜですか?また、ケース(20秒、400秒、500秒)によって変動するのはなぜですか?(はい、私のコードがひどいことは理解していますが、将来的にはフィルターの数が増え、スクリプトを拡張するのが難しくなると思います)。スクリプトを最適化するためのアドバイスがあれば、提案や意見を喜んで受け入れます(bashスクリプトを使用するのは初めてです)

#!/bin/bash

start=`date +%s`
clear

rm /Users/me/Desktop/Errors/*

echo "Hello"

grep -nr "Error" . | gawk -F" " '$4 ~ /Error/' | grep -v "@Trash"| grep -v "Cien" | grep -Fv "~$" | grep "\\\\server" | grep -v "Folder1" | grep "Object is being used" > /Users/me/Desktop/Errors/OU_Other.txt

gr=`grep -c "Error" /Users/me/Desktop/Errors/OU_Other.txt`
echo "OU_Other done with $gr errors"


grep -nr "Error" . | gawk -F" " '$4 ~ /Error/' | grep -v "@Trash"| grep -v "Cien" | grep -Fv "~$" | grep "\\\\server" | grep  "Folder1" | 
grep "Object being is used" >  /Users/me/Desktop/Errors/OU_Cien.txt

gr=`grep -c "Error" /Users/me/Desktop/Errors/OU_Cien.txt`
echo "OU_Cien done with $gr errors"

grep -nr "Error" . | gawk -F" " '$4 ~ /Error/' | grep -v "@Trash"| grep -Fv "~$" | grep "\\\\server" | grep -v "Access is denied" | grep -v "Object is being used" | grep -v "Cannot enumerate" > /Users/me/Desktop/Errors/Other.txt

gr=`grep -c "Error" /Users/me/Desktop/Errors/Other.txt`
echo "Other done with $gr errors"


end=`date +%s`
runtime=$((end-start))
echo "Runtime: $runtime sec"

ls -l /Users/me/Desktop/Errors/
アンダーキャットはモニカを称賛します

速度に関する懸念に簡単に答えるために、

  • WindowsのBashは、Windowsカーネル直接接続して、すべてのシステムコールとさまざまな実行可能形式を処理します。逆ワインと考えてください。抽象化レイヤーの数が少なく、Linuxアプリのパフォーマンスを念頭に置いて特別に設計された組み込みシステムに依存しているため、高速です。

  • 一方、Cygwinでは、POSIX(y)ソフトウェアをコンパイルして、Windows上で.exeとしてネイティブに直接実行できます。これは別の目標であり、より負担のかかる目標です。Windowsカーネルに直接マッピングされていないさまざまな外部システムコールに1:1の互換性を提供するために、距離を置く必要がある場合があるためです。

  • 仮想マシンはシステム全体をエミュレートし、特に集中的なI / Oの場合は、前の2つのオプションよりも一般的に低速ですが、時間の経過とともにますます良くなっています。調整方法については、仮想マシンのドキュメントを参照してください。

速度が気になる場合は、Linuxをマシンに直接インストールすることを強く検討する必要があります。あなたはそれがあなたが試したどのオプションよりもはるかに速く実行することに気付くでしょう。

ただし、コメントですでに述べたように、スクリプトを書き直すと、スクリプトのパフォーマンスが全体的に大幅に向上する可能性がgrepありawkます。不要な連続呼び出し呼び出しがそれほど多くないことが望ましいです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Powershellスクリプトの速度。求められる最適化

分類Dev

jsでスクリプトを最適化する方法は何ですか?

分類Dev

"return false" がスクリプトを最適化する方法

分類Dev

mysqlリクエストを最適化する方法は?

分類Dev

Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

分類Dev

Twitterテキストのクリーニングを最適化する方法は?

分類Dev

入力ストリームの読み取りを高速化する方法の最適化/連結速度の向上

分類Dev

Bashスクリプト; 処理速度の最適化

分類Dev

where句の計算でSQLクエリの速度を最適化する方法

分類Dev

このforループの計算速度を最適化する方法は?

分類Dev

テーブルクエリ速度MYSQLを最適化する方法

分類Dev

リストの付属物を含むネストされたforループを最適化する方法は?

分類Dev

リストを含むオブジェクトのフィルタリングを最適化する方法は?

分類Dev

ログファイルを色付けするためのスクリプトを最適化する方法

分類Dev

Pandas DataFrameの速度を最適化する方法は?

分類Dev

4 ** k回実行されるPythonスクリプトを最適化する方法は?

分類Dev

最適化されたrequire.jsを使用して外部スクリプトをロードする方法は?

分類Dev

パフォーマンスの観点からスクリプトを最適化する方法

分類Dev

複数のパターンを持つ複数のgzipファイルを解析するbashスクリプトを最適化する方法は?

分類Dev

PHPプロセスのメモリ使用量を最適化する方法は?

分類Dev

複数のCASEステートメントでSELECTクエリを最適化する方法は?

分類Dev

このネストされたSQLSELECTクエリを最適化する方法

分類Dev

リスト操作を最適化する方法は?(CodeFights)

分類Dev

AzureNSG用にPowershellスクリプトを最適化する

分類Dev

ActiveDirectory監査スクリプトを最適化する

分類Dev

PHPスクリプトを最適化する

分類Dev

バッチスクリプトを最適化する

分類Dev

このMiniZincアプリを最適化する方法は?

分類Dev

さまざまなリソースの作業速度が異なる場合にMSプロジェクトを最適にセットアップする方法

Related 関連記事

  1. 1

    Powershellスクリプトの速度。求められる最適化

  2. 2

    jsでスクリプトを最適化する方法は何ですか?

  3. 3

    "return false" がスクリプトを最適化する方法

  4. 4

    mysqlリクエストを最適化する方法は?

  5. 5

    Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

  6. 6

    Twitterテキストのクリーニングを最適化する方法は?

  7. 7

    入力ストリームの読み取りを高速化する方法の最適化/連結速度の向上

  8. 8

    Bashスクリプト; 処理速度の最適化

  9. 9

    where句の計算でSQLクエリの速度を最適化する方法

  10. 10

    このforループの計算速度を最適化する方法は?

  11. 11

    テーブルクエリ速度MYSQLを最適化する方法

  12. 12

    リストの付属物を含むネストされたforループを最適化する方法は?

  13. 13

    リストを含むオブジェクトのフィルタリングを最適化する方法は?

  14. 14

    ログファイルを色付けするためのスクリプトを最適化する方法

  15. 15

    Pandas DataFrameの速度を最適化する方法は?

  16. 16

    4 ** k回実行されるPythonスクリプトを最適化する方法は?

  17. 17

    最適化されたrequire.jsを使用して外部スクリプトをロードする方法は?

  18. 18

    パフォーマンスの観点からスクリプトを最適化する方法

  19. 19

    複数のパターンを持つ複数のgzipファイルを解析するbashスクリプトを最適化する方法は?

  20. 20

    PHPプロセスのメモリ使用量を最適化する方法は?

  21. 21

    複数のCASEステートメントでSELECTクエリを最適化する方法は?

  22. 22

    このネストされたSQLSELECTクエリを最適化する方法

  23. 23

    リスト操作を最適化する方法は?(CodeFights)

  24. 24

    AzureNSG用にPowershellスクリプトを最適化する

  25. 25

    ActiveDirectory監査スクリプトを最適化する

  26. 26

    PHPスクリプトを最適化する

  27. 27

    バッチスクリプトを最適化する

  28. 28

    このMiniZincアプリを最適化する方法は?

  29. 29

    さまざまなリソースの作業速度が異なる場合にMSプロジェクトを最適にセットアップする方法

ホットタグ

アーカイブ