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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0329
木村白抜き仕様mesのCPUパワー消費を抑える事はできるでしょうか7解決


木村

リンク

2010/3/29(Mon) 23:23:39|NO.31659


#module #deffunc kagemes int x,int y,str atc color 0,0,0 : pos x,y+1 : mes atc : pos x+1,y : mes atc : pos x+2,y+1 mes atc : pos x+1,y+2 : mes atc : color 255,255,255 : pos x+1,y+1 : mes atc return #global repeat redraw 0 color 255,255,255 : boxf font "HG明朝E",20 : color 0,0,0 : pos 0,0 repeat 10 kagemes 0,cnt*20,"ABCDEFGHIJKLMNOPQRSTU" loop redraw 1 await 30 loop
 このソースを流すとCPUパワーの4割以上を食ってしまいます。(CPUはIntelCeleron723
1.20GHzでした)この原因はkagemes命令です。
 一応、PCの反応速度が遅れる等の実害はありません。しかし、排熱ファンが常時稼働して
しまうようなプログラムはPCに負荷を掛けそうで、長期時間の使用に不安が残ります。

 で、本題の質問ですが、
Q1,白抜き文字を表示するmes命令を簡略化=CPUに過負荷が掛からない物にできるか否か
Q2,常時4割〜6割のCPUパワーを消費するプログラムは長期使用に弊害が耐えうるか否か
 以上の2つです。ご指導お願いします。



この記事に返信する


KA

リンク

2010/3/29(Mon) 23:56:10|NO.31661

Q1,白抜き文字を表示するmes命令を簡略化=CPUに過負荷が掛からない物にできるか否か
 →awaitを増やす、二段目のrepeatにも入れれば効果的かと。

Q2,常時4割〜6割のCPUパワーを消費するプログラムは長期使用に弊害が耐えうるか否か
 →表現が変です。パワーを消費するプログラムを長期使用して弊害が出るか?とします。
  答えは何とも言えません、何を弊害と捉えるかです。

※これはこれでベンチマークに使えるのでは?

あまり、答えに成っていなくて申し訳ないです。



木村

リンク

2010/3/30(Tue) 00:24:20|NO.31662

>>KA様
 理解できない質問を書き込んでしまい、誠に申し訳ありません。Q2の正確な意図は
KA様の類推した通り、『パワーを消費するプログラムを長期使用して弊害が出るか?』
です。
 重ね重ね、全く理解できない質問を書き込んでしまって申し訳ありません。



ANTARES

リンク

2010/3/30(Tue) 08:41:50|NO.31667

 参考になるかもしれない事実を書いておきます。

 5年半前に購入したPCで、CPU使用率50%のソフトを
ほぼ24時間稼働し続けて3ヶ月後に故障しました
(ディスプレイに何も映らなくなった)。
故障内容は、「マザーボードのコンデンサ不良」と
「パワーサプライの不具合」だそうです。

 修理後も2ヶ月くらい同じことをやっていますが、
今のところ問題なし。

 修理前はファンの音がかなりうるさかったのですが、
修理後は、かなり小さくなり、気にはなるものの、
CPU使用率を数パーセントに落としてもほとんど変わりません。
修理前は劇的に落ちていました。

 件のソフトを使い始める前、CPU使用率とは無関係に
2〜3度、ファンの音がやたらにうるさくなることがありました。
爆発でもするんじゃないかと不安になるくらいでした。

 なお、保証期間が過ぎていたのに無償修理してもらえました。
故障内容が「コンデンサ不良」だったかららしいです。
もしかすると、購入時から問題があったと判断されたのかもしれません。



あり

リンク

2010/3/30(Tue) 11:18:29|NO.31669

作るソフトの用途にもよりますが
PCに常駐させるようなプログラムにawaitを使う事はお勧めできません。
厳密な時間管理が必要でないのならwaitを使った方がPCの負荷が低いです。

あと、フォント関係の命令はコストが高いので同じ文字をいくつも表示させるのであれば
画像に置き換えた文字をコピーする方が処理が軽かったと思います。

>パワーを消費するプログラムを長期使用して弊害が出るか?
CPU使用率が上がればCPUの温度も上昇するので長時間高温状態が続けば
弊害は間違いなく出てきます。
どのくらいで弊害が発生するのかは環境やハードの排熱能力等にも左右されるので
出来る限り負荷が低い方がより安定して長期間ソフトの動作が可能でしょう。

ただANTARESさんの話のように50%前後程度のCPU使用率で
深刻な問題が発生したような話はあまり聞かないので
きちんと排熱対策がとられていれば十分実用可能なのかもしれません。



木村

リンク

2010/3/30(Tue) 19:38:49|NO.31671

 御指摘ありがとうございます。これからはCPUパワー消費を抑える為に、別バッファに画像を
置く形で白抜き文字を作りたいと思います。
 KA様、ANTARES様、あり様。重ね重ね御回答に感謝します。



あり

リンク

2010/3/31(Wed) 11:44:02|NO.31691

実験で質問のスクリプトを古いPC(Athlon700MHz)で
redrawの更新範囲を文字分だけ(redraw 1, 0, 0, 640, 200等)
にするとCPU使用率が3割以上減りました。

ちなみに文字をバッファ経由で画像としてコピーした場合
約1〜2%程負荷が減りました・・・殆ど誤差ですね(汗)

以上、参考までに。



SYAM

リンク

2010/3/31(Wed) 12:16:11|NO.31696

>CPUパワー

たいへん大雑把な話ですが、
CPUパワー(の空きの数値)というのはスクリプトや命令の負荷だけによるものではなく、
どのくらいCPUの使用権を他のプログラムにも明け渡すかが重要になります。

たとえば、ぜんぜん計算もしないのにCPUを占有だけはするソフトを作ってしまうと、重い処理なんかなにもしないのにCPUパワーをほぼ100%使い切ってるように見えるものができあがります。
逆に、恐ろしく計算量の多いスクリプトでも、こまめにwaitやawaitを実行するようになっていれば、(処理が完了するまでの時間はかかるけど)CPUパワーはあまり使いません。つまり、処理の負荷を時間方向に分散することで、同じ時間あたりの負荷を減らすわけですね。
KAさんの回答の中の「二段目のrepeatにも入れれば効果的」というのがそれにあたります。
一段目で30待つより、二段目で 3 ずつ 10回待つ方がうまく分散できるんですね。



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