Delphi的并行计算
有如下循环体:
hits:=;
for I:= to NumberOfIterations- do
begin
{perform some calculations dependent on random number generation to determine a value x}
if x> then hits:=hits+;
end;{For Loop}
FailureProbability:=hits/NumberOfIterations;
如果迭代次数非常大,如何用并行方法完成?答案如下:
program loop;
{$APPTYPE CONSOLE}
const
NumberOfIterations = ;
type
TCalcThread = class(TThread)
private
FIdx: Integer;
FHits: Cardinal;
protected
procedure Execute; override;
public
constructor Create(Idx: Integer); reintroduce;
property Hits: Cardinal read FHits;
end;
constructor TCalcThread.Create(Idx: Integer);
begin
FIdx := Idx;
FHits := ;
inherited Create(False);
end;
procedure TCalcThread.Execute;
var
i, x, start, finish: Integer;
begin
start := (NumberOfIterations div ) * FIdx;
finish := start + (NumberOfIterations div ) - ;
for i := start to finish do begin
//do your random calculations here
if x > then
Inc(FHits);
end;
end;
var
thrarr: array[..] of TCalcThread;
hndarr: array[..] of THandle;
i: Integer;
FailureProbability: Extended;
begin
for i := to do begin
thrarr[i] := TCalcThread.Create(i);
hndarr[i] := thrarr[i].Handle;
end;
WaitForMultipleObjects(, @hndarr, True, INFINITE);
FailureProbability := Extended(thrarr[].Hits + thrarr[].Hits + thrarr[].Hits + thrarr[].Hits) / NumberOfIterations;
for i := to do
thrarr[i].Free;
end.
Delphi的并行计算的更多相关文章
- delphi’线程新技术 并行计算
TParallel TInterLocked 并行库中的TTask http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Threadin ...
- Delphi 和 C++Builder 2014年及以后技术路线图
RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...
- delphi 各版本的特性
delphi 各新版本特性收集 Delphi XE6新增了一些特性并增强了原有的功能,主要有以下几个方面: IDE(整合开发环境) Internet XML(扩展标记语言) Compiler( ...
- delphi 演示数据路径
链接里默认的--------------------------- Error --------------------------- I/O error for file "C:\Prog ...
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- 用Python实现多核心并行计算
平常写的程序,无论是单线程还是多线程,大多只有一个进程,而且只能在一个核心里工作.所以很多应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或25%(四核CPU) 如果能 ...
随机推荐
- poj 1276 多重背包
735 3 4 125 6 5 3 350 //735的最大额,3种,4个125,6个5,3个350 633 4 500 30 6 100 1 5 0 1 735 0 0 3 10 100 10 50 ...
- android:layout_weight属性详解(转)
在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...
- ECJTU大一暑假集训
第二场比赛:一签到题没做出来!!!死活不远做下去了,开始发狂,最后还有2个半小时开始做别的,陆续A了几道: 我还能怪谁呢,我渣,我傻逼,就这样!! 7/19:早就想自己建一个博客了,也就是一直想想没 ...
- c# 作业2
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- jmeter性能测试实战-web登录测试
一.项目背景: 网站信息: 操作系统类型 二.需求: 登录并发测试 三.场景: 1s增加两个线程,运行2000次 分别看20.40.60并发下的表现 四.监控: 成功率.响应时间.标准差.cpu.me ...
- A jubeat
Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: 无限制 描述 jubeat是一款由日本KONAMI倾心打造的体感音乐游戏,该作在日韩.香港等地 ...
- partial(C# 参考)
分部类型定义允许将类.结构或接口的定义拆分到多个文件中. 在 File1.cs 中: namespace PC { partial class A { } } 在 File2.cs 中: ...
- BZOJ2216 : [Poi2011]Lightning Conductor
$f[i]=\max(a[j]+\lceil\sqrt{|i-j|}\rceil)$, 拆开绝对值,考虑j<i,则决策具有单调性,j>i同理, 所以可以用分治$O(n\log n)$解决. ...
- python 获取类的属性
如果不清楚一个对象是否拥有某个属性,可以使用内置函数hasattr 访问一个对象的属性的方法是通过特别属性__dict__,它是一个映射,将属性名称映射到属性值 为了调试方便,可以添加下面这个函数 d ...
- Codeforces Round #264 (Div. 2)
http://codeforces.com/contest/463 这场是我人生第一场cf啊.. 悲剧处处是啊. 首先,看不懂题,完全理解不了啊.都是wa了好几次才过的 所以a和b这两sb题我做了1个 ...