Armadilloフォーラム

QThreadを用いた際の処理速度

nic-segawa

2017年7月12日 13時22分

お世話になります。

QThreadを用いて画面更新処理と制御・演算処理を分割し、処理速度の向上を目指しています。
画面上にラベルを30個程度配置し、テキスト、背景の色を制御・演算処理結果に応じて変更しています。
制御・演算処理はQTimerを用いて1msecごとに処理を行っています。

画面の更新が無い場合はQTimerは1~3msecごとに処理されるのですが、画面が更新されるタイミングで20msec程度掛かっています。
スレッドを分けていてもこの程度の遅延は発生するものでしょうか?

よろしくお願い致します。

コメント

at_yashi

2017年8月18日 18時31分

QTimer で、1 ms 毎に呼び出される関数を作成しているということですよね?

画面の更新が完了するのには、どれくらい時間が必要なのでしょうか?

Thread は魔法ではないので、 他のスレッドが CPUを専有してしまっていて
かつ thread が schedule されない状態だと、ある thread が CPU を掴むまでに
時間がかかります。

演算結果によって画面を更新しているようなので、
- まず、画面の更新に何秒かかるか確認
- Thread を使わず、演算後に更新があれば更新する

を loop で回してはどうでしょうか?

nic-segawa

2017年8月24日 8時45分

ご回答ありがとうございました。

画面に更新がある場合のみ更新するようにプログラムを変更した結果、随分と改善されました。
更に速度改善を目指す場合はどの処理に時間が掛かっているのか確認するようにします。