HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0820
大富豪パソコンへの負荷13解決


大富豪

リンク

2021/8/20(Fri) 13:02:41|NO.93635

プログラムがパソコンに掛ける負荷の度合を
どう考えれば宜しいでしょうか。

例えばですが、

repeat
---マウスの稼働時間を測定---
---キーボードの作業ログを記録---
await 1
loop


あまり複雑な処理ではなくても、
まる24時間ずっと動いているプログラムとか。

元々windowsが高速処理しているので全く問題なしとか、
CPUモニターで90%さえ超えければOKとか、
メモリーが100%超えないようにとか、
可能なら1時間に一度遅くしたほうがいいとか。

【プログラムがPCに及ぼす負荷の度合をはかる方法】
何か目安になるものはありますか?

なるべくPCに負荷を掛けないようにするためです。
宜しくお願いします。



この記事に返信する


Y_repeat

リンク

2021/8/20(Fri) 13:53:33|NO.93636

パソコンはCPUよりハードディスクの方が先にダメになる印象ありますね
たまにマウスを動かしちゃったりして、スリープを抜けたりするので
PCはなるべくシャットダウンしてます
後、Winタブ使ってて Winタブの方が安いので 使うかんじ分散してますね
後、バッテリーも早くだめになるので なるべく充電しながら使うのはやめたいです
バッテリーの持ち時間が大分早くなってきたので
諦めて充電しながら使ってます

ハードディスクは通算使用時間一万時間頃、ダメになると言われてて
ググってツールでたまに計測してます

初級者的観点ばかりですが
自分が気にしてるのはこんなところすかね



大富豪

リンク

2021/8/20(Fri) 14:39:34|NO.93638

Y_repeatさま
ご回答頂きありがとうございます。

たしかにハードディスクに頻繁に書き込んだりするのはよくなさそうですね。
プログラムの無理が原因でCPUがクラッシュ、
というのはほぼ考えにくいという事ですね。

短時間の動作でもかなり複雑なソースの場合、
CPUがパンパンに動いている事もありますが、
簡単なプログラムで長時間動作ってどうなんでしょうね;

ちなみに
>たまにマウスを動かしちゃったりして、スリープを抜けたりするので
これってどういう状況ですか?



Y_repeat

リンク

2021/8/20(Fri) 15:29:49|NO.93639

>CPUがパンパンに動いている事もありますが、
>簡単なプログラムで長時間動作ってどうなんでしょうね;
無限ループとかやっちゃうとCPUに負荷かかるかもっすね
ブーストで高速動作のCPUとかあるじゃないすか
ブーストを長時間やったらCPUにダメージあるんすかね?
僕のPCはブーストないんでよくわからないかんじです

>たまにマウスを動かしちゃったりして、スリープを抜けたりするので
PCをシャッタダウンじゃなくスリープにすると
誤ってマウスを動かしちゃったり 違うスリープ中のPCのマウス動かしちゃったりすると
PCのスリープが終わっちゃったりするじゃないすか
そんなかんじでPCを起動してしまうと
ハードディスクの起動時間が増えちゃう的な
ノートPCは毎回シャットダウンしてますが
winタブをスリープにしてて
気がついたらwinタブを起動させっちゃたりしてます

他の方のPCに優しい手段は僕も聞いてみたいです



こいる

リンク

2021/8/20(Fri) 17:20:29|NO.93642

自分は、タスクマネージャーをみて、そのHSPのプロセスのCPU使用率が1%未満とかならOKとしますかね(PCスペックによるのであくまで目安ですが)。
負荷が大きいようなら、await 1をwait 10にするとかします。

まあ通常のブラウジングとかでそれ以上の負荷をかけているので、体感できるレベルでなければ、そんなに気にしなくてもいいかと思います。



大富豪

リンク

2021/8/20(Fri) 17:41:29|NO.93643

>Y_repeat 様
なるほどです、
色々了解しました、
ご返答ありがとうございます。

>こいる 様
ご返答ありがとうございます。
CPU使用率が1%未満ですか!
PCに優しい設計というか負荷を掛けない配慮なんですね。
参考にさせて頂きます。



wl

リンク

2021/8/21(Sat) 20:08:43|NO.93651

私は熱が気になりますね。
CPU使用率何パーセントとかより、SSDやCPUの温度を何となく見てます。
メモリ使用率は、仮想メモリを使っている場合は、
あまり上がるとページファイルの書き込みが増えそうですね。
あとは普通に、ファイルに頻繁にアクセスする処理は避ける、とか。



大富豪

リンク

2021/8/21(Sat) 22:20:56|NO.93652

>wl 様
ご回答ありがとうございます。
調べましたら一応win10標準で熱監視できるんですね;
 -->”仮想メモリ使用量をあまり上げるとページファイルの書き込みが増える”
 という意味合いですかね。
 結構頻繁に使う事があるので、
 どんな意味か調べてみます。

ほか各種参考にさせて頂きます、
ありがとうございます。



Y_repeat

リンク

2021/8/24(Tue) 15:06:35|NO.93675

>プログラムの無理が原因でCPUがクラッシュ、
>というのはほぼ考えにくいという事ですね。

CPUがクラッシュする前にOSがクラッシュするんじゃないすかね
OSにとってものすごい無理をするとクラッシュするかもですね
XPもたまにクラッシュして、青い画面に英語がずらーっとみたいな
それより前のはちょいちょいクラッシュしてた記憶もw
PCの寿命が近くなると 頻繁にクラッシュするぽいっすな
最近のWindowsは全然クラッシュしない感はあります
自分のはそんなに高くないNECのビジネス向けっぽいノートPCですが
バッテリーが切れると何の通知もなくスリープ状態に
落ち着いて対処すればOKなんですが

HDDに関しましてはSSDだと自分が使ってるTOOLは対応してないっぽいっすね



とあるプログラマ

リンク

2021/8/24(Tue) 18:36:08|NO.93677

自分がプログラムの負荷を気にするときはCPU使用率とメモリ使用量を見たりしますね。

しかしやはり、CPU使用率もメモリ使用量も正直どんなアプリケーションなのかで基準が違うので、そこまで厳密には気にしていません。
ゲームなのかツールソフトなのかバックグラウンドプロセスなのか等でピンキリですからね。

ストレージIOも1分間に何十回何百回と書き込むようなプログラムでなければ気にすることはないんじゃないかなぁと楽観視しちゃっています。


ただ一貫として、基本的にはrepeat〜loopなどの無限ループは使わないで、ウィンドウメッセージの割り込みを使うようにしています。
ウィンドウメッセージであれば必要なときに動いて必要でないときは動かないので、余計なリソースを割くことがありませんからね。


あと怖いのは長時間作動するプログラムでのメモリリークですが、HSPならこれも特に気にしなくて大丈夫ではないかなぁと思っています。

他にもシングルスレッドで1コアに負担かけるよりもマルチスレッドで分散するとか、DirectXでハードウェアアクセラレーションを使うといったような対応策もありますが、ここまでするならHSPでなくてC++でいいんじゃないかなって気がします…



usagi

リンク

2021/8/24(Tue) 23:03:46|NO.93680

私もHSPだとCPUやメモリを見るくらいですかね。
ツールとか作る時は、負荷を気にするのであれば割り込みで対応します。
基本はプログラムは停止させて、何かイベント(メッセージ)が発生した時だけ処理します。

以下簡単なペイントですが、私の環境だとCPU負荷0.1%とかでした。

; Win32のドキュメント Microsoft ; https://docs.microsoft.com/ja-jp/windows/win32/inputdev/wm-mousemove oncmd goto *ON_WM_MOUSEMOVE, 0x0200 oncmd goto *ON_WM_KEYDOWN, 0x0100 stop *ON_WM_KEYDOWN title strf("K:%d", wparam) if wparam = 0x52 : color 255 if wparam = 0x47 : color ,255 if wparam = 0x42 : color ,,255 stop *ON_WM_MOUSEMOVE title strf("M:%d,x:%d,y:%d", wparam, (lparam & 0xFFFF),(lparam>>16)) if wparam == 0 : pos (lparam & 0xFFFF), (lparam>>16) if wparam == 1 : line (lparam & 0xFFFF), (lparam>>16) stop

長時間ログを取りたいならメモリにどんどん貯めていく形で、使用量を気にするより、
10MBとか指定してバッファ溜まったらbsaveでファイルに10MB追加書き込みして
メモリをリセットすると気楽かと思います。
※ファイルサイズが大きくなるなら、ログだったら連番で保存でもいいかも
※ご自分のツールのログの量や書き込み頻度をみつつ。。



大富豪

リンク

2021/8/26(Thu) 07:52:21|NO.93692

>wl 様
ご回答ありがとうございます。
すみません、ど素人なので言葉の意味が・・・
メモリーリークとはオーバーフローして
システムメモリーを使っているとか
プログラム終了後の解放が出来ていないという状態ですかね。
メモリーはHSPで確認できるので
メモリーを多く使いそうなプログラムの場合は管理するようにしています。
実際は多くても70〜80%前後ですが;
ややこしいプログラムの場合、
CPUをリソースモニターでチェックしながら作ってますが、
気のせいかたまに120%とかずっと100%になっていたりします。
マルチスレッドで分散というのはHSPの命令で可能なんでしょうか、
ちょっと勉強してみます。


>usagi 様
ご回答ありがとうございます。
パソコンに掛かっている負荷はたぶん、
CPUかメモリーだと思うのですが、
それがどの程度でどの程度なのかが・・・。
CPUは常に100%近くメモリーも90%以上とかなら
明らかに改善するべきだと思いますが、
その度合と判断がよく分かりません;

-->長時間ログを取りたいならメモリに...
データ保存するタイプも作ってますので、
是非参考にさせて頂きます。

-->以下簡単なペイントですが、
これは?
実行後に増えたCPU使用率が0.1%という事ですかね。
私の場合10〜20%ほど増えますけど;

--->oncmd
onkeyとかonclickでしたっけ、
oncmdと同じようにイベント発生時だけ動くという事ですか?



usagi

リンク

2021/8/26(Thu) 19:20:12|NO.93694

>その度合と判断がよく分かりません;
ツール種類とユーザー環境によるのでピンキリですね。
商品として考えるならまず、動作環境、推奨スペックを一度定義されると良いと思います。
私はよく市販の似たツールをよく参考にします。
それより軽いとか、負荷はかかるけど早いとか。。。

過去に大量の大容量のデータをマルチで変換しストリームで書き出しするソフトを作った時は、効率、速度を重視されてたので
CPUやハードディスクが常に100%になる様調整したりもしてましたので、負荷が無いことが良いとも言い切れないですね。

10万円くらいのノートパソコンでPhotoshopみたいなツール作りたいのですが、どんくらいの負荷なら皆さんサクサク使えます?
とか具体例を出し方が、皆さんコレくらいじゃないかなと答えやすいとは思いました。

>私の場合10〜20%ほど増えますけど;
デバックウインドウ開いていると私もそれくらいになりますね。
(そっちの更新負荷かかるので)
今後、負荷を気にされるならリリースなのかデバックなのかを意識すると良いと思います。
私なんかはデバック時は確認用の出力多くする癖があるので数十倍遅くなりがちですね。
(HSPはさほど変わりませんが、c++とかすごく変わるので)

>oncmdと同じようにイベント発生時だけ動くという事ですか?
その通りですございます。
重要なのはループで処理はせず、常時ストップしている事と、イベント発生時だけ処理をしているという事です。

■余談■
最近のパソコンだと分かりにくいですが、もし将来マイコンとか触られるとすると、
ループ処理と、CPUをストップさせて割込み時だけ処理のプログラムを書いてみると、
電池の持ちが数分から数日くらい変わるので、割込みの方が負荷が少ないと言うのが体験できるかもしれないですね。(デジタル時計とか)



大富豪

リンク

2021/8/28(Sat) 08:41:52|NO.93714

>usagi 様
熟読させて頂きました。
また各件大変勉強になりました。
HSPでCPUの稼働率が見れるといいんですけどね;
作業時にも何度か読み返して参考にさせて頂きます、
誠にありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.