NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

指定のセル色の変更の改善

・現在、25行×4列の表から真偽の結果によって、指定セルの色変更したいと思い、テストプロを作成してみました。(添付ファイル)
 が、以下の項目について悩んでいます。何かよい解決方法はあるのでしょうか?
 
1.処理時間が不安定である。
   添付図では333msecと表示されていますが、約100~400msec内で動作しています。もっと安定しないものか? また、なぜこんなに差が開くのか?
 
2. 処理速度を縮めたい。
   本作業では、テストプロの表の4倍の大きさの表が6枚あり、さらに工学値変換等他の処理も追加されるため、   処理速度をなるべく縮めたい。
 希望としては、10msec以下(テストプロ)に納めることは可能であるか?(使用するPCのCPUは「Celeron(1300MHz)」です。)
 
 ※テストプロの内容は、配列で入力した値が10未満、20以上の場合は薄紫(?)、11以上19以下の場合は薄黄色(?)でセル色を変更するプログラムです。
 
以上宜しくお願いします。
0 件の賞賛
メッセージ1/6
3,799件の閲覧回数
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の塩原と申します。

ディスカッションフォーラムをご利用いただき、ありがとうございます。
ご投稿いただきましたVIの処理時間につきまして回答させていただきます。

1.処理時間が不安定である。
PC上では常にCPUのリソースを要求するプログラムやプロセスが有り、CPUの使用はこのようなプログラムやプロセスに割り振られています。他のプログラムやプロセスがCPUのリソースを要求するタイミングや頻度によって、CPUがLabVIEWに割り当てる使用権利の回数が変わります。従って、ループ内の処理が実行されるタイミングや、実行完了までの時間が不安定になることは避けられないかと思われます。

また、ループ内にケースストラクチャが含まれていることもあり、ケース内容によってはCPUへの負担が異なりますので、これも処理速度が不安定になる原因かと思われます。

以上を避けるには、ループ実行速度を遅く設定されたほうがよろしいかと思われます。待機関数を置いて頂いて、ループが一回まわるごとに設定された時間待機し、また次のループが回るよう設定すれば一定にすることができるかと思われますが、処理速度は低下してしまうことが考えられます。  


2. 処理速度を縮めたい。
ループ内に2つのループを置き、25x4のセルの数値を一つ一つ真偽し結果をケースによって色変更しているため、処理速度が低下してしまうのは避けられないかと思われます。 こちらを4倍にし、さらに6枚の表を一度に処理するとなるとやはり速度が低下してしまいます。  処理速度を縮めるには、やはりデータ数を少なくし処理を軽くすることがよいかと思われます。

LabVIEWのヘルプよりVIの実行速度に関する記載がございますのでご参照ください。
(LabVIEWヘルプ ≫ 目次 ≫ 基本機能 ≫ パフォーマンスおよびメモリを管理する ≫ 概要 ≫ VIの実行速度)

以上、ご不明な点等がございましたらご連絡ください。
お手数ですがよろしくお願いいたします。
0 件の賞賛
メッセージ2/6
3,765件の閲覧回数

横槍で恐縮です。

>2. 処理速度を縮めたい。
>ループ内に2つのループを置き、25x4のセルの数値を一つ一つ真偽し結果をケースによって色変更しているため、処理速度が低下してしまうのは避けられないかと思われます。

なので、やらないで良い処理はさせないようにすると良いかと思います。

もし配列の変更がユーザが手で行うようなもので、(PCから見ると)たまに1つのセルしか変更されない場合は、常に全てのセルの色設定をするのではなく、たまに変わったセル1つだけ判定して変えれば良いわけで、例えば添付のように配列値をシフトレジスタに与え、1つ前の配列値と変わったところだけ判定して色設定すれば、変えた瞬間に1度だけ1セルのみ色設定されます。「表」のセルのプロパティ設定は、なぜか異常に時間がかかるので、色設定しなくてよい時はしないようにさせると良いでしょう。

添付のviでやってみると、「処理時間」に表示された値は常に0(msec)でした。(ただ、全てのセルで必ず色を書き換えるようにしても、処理時間は20msec程度でしたので、御投稿の333msecは、何か他に異常に時間を食う処理が並走しているのでしょうか・・・?)

なお、もし、配列の変更がプログラム的で、一度に沢山の値が頻繁に入れ替わるようだと、常に沢山のセルの色設定が必要になり、この方法は使えませんのであしからず・・(変えないでよいセルは何もしないので、多少は良いですが)

 

0 件の賞賛
メッセージ3/6
3,758件の閲覧回数
塩原様
白石様
 
 ご回答ありがとうございます。
 
 1.処理時間の不安定
   処理時間の不安定件は了解しました。
 
 2.処理時間の短縮
   データ数は残念ながら減らすことは無理なので、教えて頂いたヘルプを参考に、別の方法で異常を知らせるようにします。
 
   >添付のviでやってみると、「処理時間」に表示された値は常に0(msec)でした。
    特にCPUを占用するようなソフトが起動されていません。私の使用しているPCのCPUがCeleron(1300MHz)が原因ですかね?
 
    また、添付のサンプルありがとうございます。色々勉強になります。
 
 どうもありがとうございました。
0 件の賞賛
メッセージ4/6
3,744件の閲覧回数
白石 様

いつも参考になるご助言、サンプル等をご投稿して頂き誠にありがとうございます。
今後とも何卒宜しくお願い申し上げます。

日本ナショナルインスツルメンツ株式会社 
技術部 
塩原
0 件の賞賛
メッセージ5/6
3,709件の閲覧回数
Kudzu  様

またご質問等ございましたら弊社ディスカッションフォーラムにお気軽にご投稿下さい。
今後とも何卒宜しくお願い致します。

日本ナショナルインスツルメンツ株式会社 
技術部 
塩原
0 件の賞賛
メッセージ6/6
3,708件の閲覧回数