Java程序性能优化-并行替代串行

Java程序性能优化-并行替代串行,第1张

  并行替代串行物稿

随着多核时代的到来 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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12543904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存