CPUに負荷


のちょ  2003-01-22 19:43:00  No: 2653

CPUやメモリに負荷を段階的にかけ、全体の処理を重くするソフト
を作成したいけどどの様にすればいいの?
こんな感じ(下)くるくるコンピュータ
http://hp.vector.co.jp/authors/VA010102/tc120.lzh


にしの  2003-01-23 03:39:46  No: 2654

スレッドを作成しているみたいですね。その中で計算やらしながらループさせて、負荷をかけているんだと思います。
メモリは、GetMemoryなどで確保すればいいと思います。


のちょ  2003-01-23 19:45:28  No: 2655

Delphiを始めたばかりの初心者なので
具体的にどの様にすればいいのでしょう?
Google等で検索しても、それらしいHPも見つかりません。


にしの  2003-01-23 21:56:05  No: 2656

どのように検索しました?
TThreadとDelphiで検索すると出てきます。

http://www.borland.co.jp/tips/delphi/dh004/thread_1.html
ここに、BorlandのTipsがあります。

簡単に説明すると、TThreadを継承したクラスのExecuteプロシージャを用意すればOKです。
Executeプロシージャが終了するとスレッドも終了してしまうので、ループさせるとよいでしょう。

GetMemoryよりGetMemならわかりやすいでしょうか。
VCLのヘルプで出ると思います。GetMemしたメモリは、FreeMemすれば解放されます。


のちょ  2003-01-23 22:54:50  No: 2657

ごめんなさい説明不足でした。
スレッドの作成は、わかったのですがスレッド内で
どの様なことをしたら負荷をかけることが出来るかが
知りたかったのです。
procedure TMyThread.Execute;
var
  X,Y,Z: Extended;
begin
  while not Terminated do begin
    Randomize;
    X := Random;  // 乱数を生成
    Y := Random;  // 乱数を生成
    Z := Power(X,Y);
//  Form1.DummyLabel.Caption := FormatFloat('0.000E+00',Z);
  end;
end;
こんな感じで、実行してみたのですがたいして負荷がかかりませんでした。
コメントの部分を有効にすれば重くなりますが、こういう使い方は御法度
かな?


たかみちえ  URL  2003-01-23 23:04:29  No: 2658

CPUにわざと負荷をかけるんですから、わざとご法度を犯さないといけないのではないでしょうか?

  ただ、それだけじゃちょっと少なすぎる気がしますけど。
  わたしならもうちょっとめちゃくちゃにやると思います(^^ゞ

  ところで、Form1は、このスレッド内のものですか?
TThreadのヘルプページにもありますけど、メインスレッドのものはそのまんまではいじれませんよ。


にしの  2003-01-23 23:26:42  No: 2659

それだと、最適化されると何もしないループになってしまうかも。
負荷をかけるには、負荷のかかる処理をするだけです。
簡単に思いつくのは、円周率の計算とか、多倍長演算とか。
プロセスメモリ内部の文字列検索なんかも負荷がかかると思います。

それと、スレッドからVCLをいじるには、Synchronizedで呼び出さないといけません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加