CPUに負荷


のちょ  2003-01-22 19:43:00  No: 2653  IP: [192.*.*.*]

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

編集    削除
にしの  2003-01-23 03:39:46  No: 2654  IP: [192.*.*.*]

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

編集    削除
のちょ  2003-01-23 19:45:28  No: 2655  IP: [192.*.*.*]

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

編集    削除
にしの  2003-01-23 21:56:05  No: 2656  IP: [192.*.*.*]

どのように検索しました?
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  IP: [192.*.*.*]

ごめんなさい説明不足でした。
スレッドの作成は、わかったのですがスレッド内で
どの様なことをしたら負荷をかけることが出来るかが
知りたかったのです。
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  IP: [192.*.*.*]

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

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


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

編集    削除
にしの  2003-01-23 23:26:42  No: 2659  IP: [192.*.*.*]

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

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

編集    削除