NI製品ディスカッション

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

チャートの描画速度が以前のバージョンに比べて格段に落ちました。

一画面上にチャート表示を一度に12個並べて表示しています。更新は1秒間に50回です。

以前のバージョン(2012以前)だと、application builderで生成したexeファイルが

WinXP 1GBRAM Core2DuoT7100/1.8Gでも余裕で動いていたのですが、

2014だと上記スペックを上回るマシンでも更新が間に合わずにもたついてしまいます。

 

何か解決の方法はないでしょうか?

マルチコアの設定など、チャート描画を速くする設定などがありましたらご教示下さい。

64bitのLabVIEWで構築した方が速くなるのでしょうか?

 

0 件の賞賛
メッセージ1/9
5,446件の閲覧回数

こんにちは、

>>2012以前
こちらバージョンは具体的にはどのバージョンですか?

>>上記スペックを上回るマシン
こちらはどのようなスペックのパソコンですか?OSによっては動作速度が変わる事もありますので、同じ環境でのテストを行っていただきたいです。

LabVIEW2014で作られたEXEと2012のEXEは同じviから作成したEXEですか?もし違うviから作成したEXEを使っている場合は単純に比較することは難しいかと思います。

64ビットのLabVIEWは以下の注意点があります。
1.英語版のみです。
2.64ビットのLabVIEWで作られたプログラムは64ビットのOS環境のみで動作します。

 

LabVIEW 32ビット、64ビットに関した英語の資料ですが参照してください。

http://digital.ni.com/public.nsf/allkb/71E9408E6DEAD76C8625760B006B6F98

0 件の賞賛
メッセージ2/9
5,411件の閲覧回数

> OSによっては動作速度が変わる事もありますので、同じ環境でのテストを行っていただきたいです。

 

dragon1さんのご指摘をもとに、たまたまスペックがほぼ同一でOSのみ異なる2台のマシンを用意し、

検証してみました。

 

マシン1:

Win8.1 Pro 64bit Core2Duo T7100 1.80GHz 8GBRAM

 

マシン2:

WinXP Pro 32bit Core2Duo T7100 1.80GHz 2GBRAM

 

ビルドは上記2台のマシンとは別のマシン上でLabVIEW 2014 SP1 32bitで行い、

exeを走らせて検証しました。

 

結果

マシン1:

かなりもたつく。データの取りこぼしはないが、バッファに貯まった分がチャートに反映されるのが間に合わず、

チャート表示がどんどん遅れていく。そうかと思えば遅れた分を一気に取り戻すようにチャートが速く流れたりと

チャート表示の速度が非常に不安定である。

 

マシン2:

チャートの遅れは認められない。データは常にチャートにリアルタイムで反映される。

チャートの表示速度も安定している。データの取りこぼしもない。

 

というような結果となりました。

以上のことから、LabVIEWのパフォーマンスの問題では無く、OSに依存した問題である可能性が高いという

判断となりました。

 

お騒がせしてすみませんでした。

 

0 件の賞賛
メッセージ3/9
5,353件の閲覧回数

もう少し本質的な話に踏み込みたいのですが、フロントパネルの描画タイミングを変更するのはいかがでしょう?

VIの実行速度 - LabVIEW 2012ヘルプ - National Instruments

http://zone.ni.com/reference/ja-XX/help/371361J-0112/lvconcepts/vi_execution_speed/

頻繁にフロントパネルで制御器を更新する操作は、アプリケーションで最も時間がかかる操作のうちの1つとなる場合があります。

 

「チャートの描画速度が遅い」というのは、PCが描画処理を処理しきれていないのだと思います。

パネルアップデートを延期プロパティ - LabVIEW 2012ヘルプ - National Instruments

http://zone.ni.com/reference/ja-XX/help/371361J-0112/lvprop/pnl_defer_pnl_updts/

 

このプロパティを使用すると、フロントパネルのアップデートレートを調整することができます。

これを使って、例えば200msec毎にチャートを更新するようにされると、処理が速くなるかも知れません。

 

例えば1msec毎に更新したいと言っても、人間の目はそこまでの処理速度に追いつけませんので・・・

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ4/9
5,321件の閲覧回数

アドバイスありがとうございます。

 

恥ずかしながら、Tepig様のアドバイスにある「パネルアップデートを延期プロパティ」の

作成方法が分かりません。

どのような手順で出すことが出来るのでしょうか?

 

ブロックダイヤグラムのチャートを右クリック→作成→プロパティノードと操作しましたが、

そのような項目は見つかりませんでした。

 

お手数をおかけしますが、アドバイスお願いいたします。

 

0 件の賞賛
メッセージ5/9
5,311件の閲覧回数

このプロパティは、「パネル」オブジェクトで使用できます。VIオブジェクトリファレンスからプロパティノードを使って’パネル’リファレンスを取り出すことができます。

 

http://forums.ni.com/t5/LabVIEW/Multi-Lingual-Front-Panels-English-Portuguese-Chinese/td-p/922792

TailOfGon
Certified LabVIEW Architect 2013
0 件の賞賛
メッセージ6/9
5,296件の閲覧回数

TailOfGonさん、ありがとうございます。

 

Hirokiさん、

「labview panel update example」で検索するとサンプルもありますよ

Community: How to Disable/Enable Front Panel Updates - National Instruments

https://decibel.ni.com/content/docs/DOC-4519

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ7/9
5,280件の閲覧回数

Tepig様のアドバイスを元に更新頻度を下げるようviを改造したのですが、

結果は「さらにひどくなった」と、所望の改善は得られませんでした。

 

現在、更新頻度を毎秒50回としていたものを、5回に1回の更新に変更し、毎秒10回としたのですが、

なぜかさらにもたつきが増加してしまいました。

 

この改良を行う前は50回のループを1500ms前後で動作していました。

本来は1000msとなるべき所です。

添付のダイヤグラムをループの中に追加したところ、

50回のループ(画面更新頻度は10回/秒)が2500msかかってしまいました。

 

ちょっとどういう現象が起きているのか分かりません。

 

0 件の賞賛
メッセージ8/9
5,260件の閲覧回数

こんにちは

 

今回のバージョンの違いによる異なる動作、そしてこのスレッドの流れで気になる点を何点か

 

・LabVIEW はバージョンを重ねるごとに処理が重くなってるみたいですが、Windowsも似たりよったりです。

マシンの性能があがったとしても、Windows 7 やWindows 8 は裏で色々なソフトが動いてたりするので、Windows XPで動作確認したソフトが

Windows 8 などのマシンで処理速度が異なるのは仕方がないかと。そして市販のノートPCなどはただでさえ色々余計なソフトがインストールされて出荷されるので

なおさら比較対象にするのは難しいかと。

 

・グラフやチャートに表示させるデータ数や更新頻度は用途によってもちろん変わると思いますが、

一点一点追加する必要がなければ、一度配列にまとめた上でチャートやグラフに追加するほうが描画の処理が少なくてすみます。

 

Graph.png

 

・プロパティノードは頻繁に呼ばないほうがいいですよ。

何度も呼び出すと逆に処理が重くなりますので、なんらかの変更を加えたい時以外はケースストラクチャでくくることをお勧めします。

 

property node.png

0 件の賞賛
メッセージ9/9
5,238件の閲覧回数