并行替代串行物稿
随着多核时代的到来 CPU的并行能力有了很大的提升 在这种背景下 传统的串行程序已经无法发挥CPU的最大潜能 造成系统资源的浪费 而并行软件开发技术恰好可以在这方面将CPU性能发挥到极致
Java对多线程的支持为多核计算提供了强有力的保障 首先 Java中提供了Thread对象和Runnable接口用于创建进程内的线程 其次 为了优化并行程序性能 JDK还提供了java util concurrent并发包 内置各种多线程性能优化工具和组件 如线程池 各种并发数据结构等 除此之外 为确保多线程间能相互协作 JDK还提供了各种同步工具
有关并行程序的开发和优化方法 可以参考第 章 并行程序开发及优化 一节
返回目录 Java程序性能优化 让你的Java程序更快 更稳定
编辑推尺简荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
J ME移动开发实战教学视频
罩困孝Visual C++音频/视频技术开发与实战
Oracle索引技术
lishixinzhi/Article/program/Java/gj/201311/27793将串行变为并行会减缓程序的运行速度,原因有两个:
1. 并行程序需要多个处理器或多台机器才能完全发挥其性能,而单机的能力有限,因此会带来性能的衰减。
2. 编写并行程序时,为了能够让纯亏判多个处理器或多台机器同时运行空弊,程序执行过程中需要进行大量的消息传递、数据同做改步等,这些 *** 作会额外耗费时间。
#include "stdafx.h"#include<stdio.h>
#include<math.h>
#include <蠢袜或time.h>
#include <omp.h>
#include<iostream>
using namespace std
//设置全局数组——牛顿 科特斯公式系数表
double C[6][7]={{1.0/2,1.0/2},{1.0/6,4.0/6,1.0/6},{1.0/8,3.0/8,3.0/8,1.0/8},{7.0/90,16.0/45,2.0/15,16.0/45,7.0/90},{19.0/288,25.0/96,25.0/144,25.0/144,25.0/96,19.0/188},{41.0/840,9.0/35,9.0/280,34.0/好贺105,9.0/280,9.0/35,41.0/840}}
int _tmain(int argc, _TCHAR* argv[])
{
double a=0.0,b=0.0,Cotes=0.0,begin ,end
int n=0
cout<<"请分别输入积分段的下限和上限:"<<endl
cin>>a>>b
cout<<"请输入您想设置的分段数(节点数-1):"<<endl
cin>>n
//检测输入
while(!(n>=1&&n<=6))
{
cout<<"分段数最多为6,请重新输入"<<endl
cin>>n
}
begin=(double)clock() /*计算开始时间的函数*/
omp_set_num_threads(2)
#pragma omp parallel for reduction(+:Cotes)
for(int j=0j<=nj++) //计算科特斯公式的值
Cotes=Cotes+C[n-1][j]*log((j*(b-a)/n)+a)//函数f(x)为f(x)=ln x 这里可以改成想要带伍的函数
Cotes=(b-a)*Cotes
cout<<"牛顿—柯特斯公式计算积分的结果是"<<Cotes<<endl
end=(double)clock() //牛顿—柯特斯公式积分计算的结束时间
printf("\n牛顿—柯特斯公式计算积分所需要的时间是:%f秒\n",(end-begin)/ (double)CLOCKS_PER_SEC)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)