[過去ログ] くだらねえ質問はここに書き込め! Part 237 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
242: 2019/08/02(金)14:19 ID:BRECbbyP(1/4) AAS
今不思議な現象が起きて悩んでる。
とある処理をするプログラムがあるんだが、その実行に2.5秒ぐらいかかる。
オプション指定をすることで、そのプログラムは並列で別の処理を"追加"で行う。
そうするとなぜか1.5秒ぐらいで処理が完了してしまう。
とある処理を並列でするわけじゃないんだ。
とある処理とは別に起動する別プロセスがバックグラウンドで走っていると、
とある処理が早く終わってしまうんだ。
なんでや?
244(1): 2019/08/02(金)14:49 ID:BRECbbyP(2/4) AAS
ちょっと言いたくないかなw
自分で作ってるツールで、ユニークな発想のテクニックを
多用してるので詳しく言うと特定されちゃう
(メインの)とある処理は、ほぼCPUバウンドなはず
追加で起動する別プロセスは、おそらくI/Oバウンドで、そのプロセスを起動するオプションを付けたときは
メインのとある処理とそのプロセスは、ファイルの有無+ビジーウェイトで同期をとって動いている。
つまり、通常状態・・・メインの処理をCPUを使ってめいいっぱい動いている。
オプションつけたとき・・・メインが処理する→別プロセスが処理する→メインが処理する→別プロセスが処理する(繰り返し)
そのメインと別プロセスは(ある程度かぶっても良い部分があるにしろ)交互に実行しないといけない
そのお互いの処理の終了をファイルの有無で判断している。
(いかにも効率が悪そうな方法だが、いろんな制約があって、この方法が一番簡単で安定していた)
そこらへんが関係すると思ってるんだが、普通に考えるとオプションつけたときのほうが遅くなって
それがどれだけ遅くなってしまうか?を気にしていたんだが、逆に早くなるってどういうことなんだろう?
249(1): 244 2019/08/02(金)19:27 ID:BRECbbyP(3/4) AAS
理由わかったわ。CPUの省電力機能だ。
オプションを付けたときビジーウェイトやってるから通常よりもCPUを使うことになる。
その結果CPUが持つクロック数の範囲1.6Ghz〜3.9Ghzが、すぐに最大付近まで跳ね上がる。
オプションを付けないときはめいいっぱいと言ってもわずかに
I/Oなどが挟まるからか2Gzh〜2.3Ghz程度で最大にまでならない。
その結果CPU処理が高いほうが速く終わるという逆転現象が発生してる。
cpufreq-setでperformanceにしたら1.3秒程度で
想定通りオプションを付けないほうが速くなった。
252: 2019/08/02(金)21:51 ID:BRECbbyP(4/4) AAS
正しく書けば、正しく動く
間違ったコードを書けば動かない。
それだけの話
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.171s*