[過去ログ] ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
799
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)00:13 ID:IU6x2eOV0(1/8) AAS
>>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません

> この処理ならlocalFinallyが最適かもです
省4
801
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)00:35 ID:IU6x2eOV0(2/8) AAS
>>800
なるほど〜
CPU 処理も IO もあって微妙なところですね

ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?
省2
803
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)00:45 ID:IU6x2eOV0(3/8) AAS
>>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います

同時実行の程度を制限するタスク スケジューラを作成する
省6
806
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)00:54 ID:IU6x2eOV0(4/8) AAS
>>804
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
807
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)00:59 ID:IU6x2eOV0(5/8) AAS
>>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
812
(2): (ワッチョイ 9f5d-haGl) 2018/07/22(日)01:18 ID:IU6x2eOV0(6/8) AAS
>>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?

>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw

>>811
省5
813
(1): (ワッチョイ 9f5d-haGl) 2018/07/22(日)01:27 ID:IU6x2eOV0(7/8) AAS
AA省
818: (ワッチョイ 9f5d-haGl) 2018/07/22(日)03:07 ID:IU6x2eOV0(8/8) AAS
AA省
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s