掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド化で処理が遅くなる? (ID:23641)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
同じ処理をスレッド化により高速化させようと考えています。が、スレッド化で遅くなってしまいました。スレッド内での処理時間が短いとスレッド化のメリットがないのでしょうか? ためしに1つだけ実行する処理をスレッドにして処理させた場合とメインスレッドで処理させた場合との時間を計ったところスレッド化の方が2倍以上 遅くなりました。 処理がおかしいのでしょうか?スレッドはそのようなものでしょうか? ===== TMeasThread = class(TThread) private Fa : Integer; Fb : Integer; protected procedure Execute; override; public // constructor & destructor constructor Create(a, b: Integer); destructor Destroy; override; end; TTestControl = class FMeasThread : TMeasThread; procedure TestStart(a, b: Integer); end; // TMeasThread constructor TMeasThread.Create(a, b: Integer); begin inherited Create(True); FreeOnTerminate := True; Fa := a; Fb := b; Resume; end; // Execute procedure TMeasThread.Execute; begin TestExecute(Fa, Fb); end; // 測定開始 procedure TTestControl.TestStart(a, b: Integer); begin it スレッドにより実行 then begin FMeasThread := TMeasThread.Create(a, b); FMeasThread.OnTerminate := OnTerminate; end else begin TestExecute(a, b); // スレッドで実行するものと同じ処理をメインスレッドで実行 end; // 以下の動機処理は等は割愛します end; procedure TTestControl.OnTerminate(Sender: TObject); begin FMeasThread := nil; end; procedure TestExecute(a, b: Integer); begin // 何もしない end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.