[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part138 http://mevius.5ch.net/test/read.cgi/tech/1528194762/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
800: デフォルトの名無しさん (ワッチョイ ffe8-U/lW) [] 2018/07/22(日) 00:23:24.78 ID:qjdpSLXF0 >>799 圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す これで1タスクです 1ファイル200MBほどで100ファイル以上処理することが多いです 圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます http://mevius.5ch.net/test/read.cgi/tech/1528194762/800
801: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/22(日) 00:35:58.51 ID:IU6x2eOV0 >>800 なるほど〜 CPU 処理も IO もあって微妙なところですね ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか? (例えば 7-zip.exe だと -mmt がそれにあたります) もし外部ツールがマルチスレッドに対応してるなら、 並列処理はそっちに任せてしまうというのはどうでしょう? または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、 C# によるより細かい制御も可能になると思います http://mevius.5ch.net/test/read.cgi/tech/1528194762/801
803: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/22(日) 00:45:55.06 ID:IU6x2eOV0 >>800 それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で Parallel.ForEach を呼び出すのはさすがにまずいと思います ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、 ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを 設定すればより柔軟な並列処理を実現できると思います 同時実行の程度を制限するタスク スケジューラを作成する https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx >>802 それは確かにw 完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら 意味がないですからね (ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw) http://mevius.5ch.net/test/read.cgi/tech/1528194762/803
813: デフォルトの名無しさん (ワッチョイ 9f5d-haGl) [sage] 2018/07/22(日) 01:27:28.49 ID:IU6x2eOV0 >>809 >>812 いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、 foreach (ファイルのループ) { foreach (進捗状況のループ) { await (進捗状況の更新待ち); (進捗状況を画面に反映); } (1ファイルの完了を画面に反映); } のような感じで十分だと思うのですが、どんなもんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1528194762/813
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.031s