情報詳細Q:画像処理の処理時間がばらつきますがどのような理由が考えられますか?A:お使いの言語によっても異なるのですが、C++..NET系言語(C#,VB.net)で共通のこととしては、1.そもそも処理している画像が異なる2.メモリの断片化(フラグメンテーション)によるメモリ確保に時間がかかっている3.CPUキャッシュの確保に時間がかかっている(他のアプリケーションに使われている)4.Windows OSによるスレッドへの割り込みがある5.自動並列化(AOP)のスレッド同期に時間がかかっている6.他のアプリケーションからの画像処理スレッドへの割り込みがあるなどが考えられます。7.C#の場合は上記についかでGC.Collectに時間がかかるケースがあります。GC.Collectにかかる時間のばらつきはメモリの使用量が大きい場合やHALCONが新たに確保するメモリの個数が多い場合に時間がかかり set_system ”image_cache_capacity”で画像メモリの確保量を大きくすることで解決可能な場合があります。2~4のケースでは、OSやCPU側の仕様となるためアプリケーション側からはどうにもならない場合が多いですが、5.自動並列化(AOP)のスレッド同期に時間がかかっている → set_system 'num_threads'でスレッド数を制限する set_system('parallelize_operators','false')で自動並列化をOFFにする ことでばらつきを少なくすることができる可能性があります。6.他のアプリケーションからの画像処理スレッドへの割り込みがある → Windowsタスクマネージャーからプロセスの優先度やどのコアに割り当てるかという設定で回避できます。https://www.atmarkit.co.jp/ait/articles/0703/16/news151.htmlとはいえ、アプリケーションや環境により処理時間がばらつく要因は様々ですので、プログラムをもらわないとわからない側面が多いです。あくまで上記は一般的な要因であることにご注意ください。添付ファイルタイトル画像処理の処理時間がばらつく理由URL 名画像処理の処理時間がばらつく理由公開状況公開済み検証状況公開済み