私は関数を持っています。これは、行列に対していくつかの演算を実行する関数foo()です。 コンソールアプリケーションで関数を呼び出すと、結果を返すのに1秒かかる。 Windowsのフォームアプリケーション(ボタンをクリックし、新しいスレッドを開始し、スレッドからfoo()を呼び出す)で関数を呼び出すと、関数は3秒で復帰する必要があります。同一の入力と同じ出力であることは明らかです。 私はそれがWindowsフォームを処理するスレッドがまだアクティブであるためだと思う、それを停止するか、それを優先させるのが遅くなるか?スレッドの優先度と関数実行時間
答えて
フォームイベントスレッドを強制終了する理由がわかりません。これにより、アプリケーションが使用できなくなります。このスレッドは、計算集約型のタスクを実行していないため、フォーム上のイベントを待っているため、優先度を低く設定することはほとんどありません。
スレッドが完了するまでの時間を正確に指定してください。コンソールアプリケーションには表示されないスレッドの開始/停止には、一定のオーバーヘッドがあります。
私はこのようにしています:clock_t finish(clock()); foo(); clock_t finish(clock()); int n = finish-start;コンソールの場合、値は約1000です。ウィンドウの形式は約3500です。それは私には本当に奇妙な音です。関数は本当に同じです、私はボタンをクリックして呼び出されたスレッドを追加...それはそれです – andrea
どのようにスレッドの 'n'を通知し、それを表示するか、デバッガのスレッドを停止し、検査それは計算された後ですか?この値は、@ Tudorのヒントと同じでなければなりません。同じコアタイプで同じ作業をしています。 1000-3000プロセッサのダンプでは、foo()が何かによって中断されたことを知ることは不運で、テストを複数回実行したと確信しています。スレッドによって開始されると、foo()はreturnとsecond clock_tの呼び出しまで実行される可能性が非常に高いです。 –
よく私は、opencvライブラリで定義された関数がコンソールよりもWindowsフォームで4倍多くなることを発見しました。私はちょうど関数を書き換えて、パフォーマンスはほぼ同じです。 – andrea
- 1. スレッドの優先度とスレッドの精度
- 2. スレッド実行後のスウィフト変更スレッドの品質/優先度
- 3. GCDスケジューリング/スレッド間の優先度
- 4. 優先度設定のスレッド
- 5. CSSとJavascript - 実行の優先度
- 6. 最低優先度のコアでスレッドを実行する
- 7. 優先度キューポーリング()時間複雑
- 8. TF実行セッション:操作の優先度
- 9. Firefox拡張の実行優先度
- 10. POSIXでのスレッドの優先度
- 11. スレッドの優先度を変更 - Unity 3d
- 12. スレッドの優先度を変更する
- 13. C#で複数のメソッドを同時に優先度で実行するには?
- 14. Linuxスレッド優先度、動作が異常
- 15. SAPI実行優先
- 16. Azure関数 - 別のスレッドで長時間実行する
- 17. ハスケル関数関数の適用優先度
- 18. UIスレッドのスレッド優先度はどのくらいですか?
- 19. プロセスの優先順位とスレッドの優先順位
- 20. スレッドでスレッドの優先度を低くする
- 21. 2つのカテゴリの間の優先度
- 22. nodejs関数実行の優先順位付け
- 23. 深さ優先グラフアルゴリズムの時間複雑度
- 24. Python:優先度として優先度キュー
- 25. 長時間実行スレッド+ライフサイクル
- 26. Linuxのスレッド優先度とスケジューラを変更する
- 27. RabbitMQとメッセージの優先度
- 28. コンポーネントとディレクティブイベントの優先度
- 29. 優先度に基づいてプロジェクト時間を調整する
- 30. 優先時間の後のクエリ
「考える」しないでください。測定する。 –
よく私は関数を計算する時間を測定するためにc_clockを使用していますが、そのスレッドにアクセスする方法がわからないので、スレッドが時間を費やす時間を測定する方法がないので、 "考える" – andrea
プロファイラを使用します。 .NETはあなたの背中の背後にある多くのことをしているので、このような簡単な測定を損なう可能性があるので、 'clock'を使った測定は非常に不正確です。 –