测试用的电脑是一台10年老电脑,CPU型号:E3 1230V2,3.3GHZ,4核8线程,8GB内存。

用下面的Julia程序,计算1万位的Pi值,耗时为0.26秒。

作为比较,用Julia实现的另一个算法([Julia&Delphi]快速计算圆周率 Pi (π) 值_BlueStorm的博客-CSDN博客)耗时4.87秒, 相比起来

性能提高了18倍。

function CalcPi(digits) #单进程单线程方式precision = ceil(Int64, digits*log2(10)) + 8setprecision(BigFloat, precision)s0 = big(10.0);s1 = big(0.0)i = big(0)while s1 != s0 Mk = factorial(6i) / (factorial(3i) * factorial(i)^3)Lk = 545140134i + 13591409Xk = (-262537412640768000)^is0 = s1s1 += Mk * Lk / Xki += 1endprintln(i)c = 426880 * sqrt(big(10005))return c/sum(s1)
end@time CalcPi(10000);0.263431 seconds (53.41 k allocations: 27.765 MiB)

为进一步减少运行时间,把上述代码变成多进程方式,开启8个Julia工作进程,在4核心8线程的CPU上运行,如下面的代码所示。测试结果:程序性能提高到0.285/0.0774 = 3.7倍。

using Distributed;
#测试用的电脑: cpu E3 1230V2(4核8线程) 3.3GHZ 8GB内存
n = Base.Sys.CPU_THREADS - nworkers()
n > 0 && addprocs(n) #开启8个工作进程(worker processes)function CalcPi_P(digits) #多进程方式precision = ceil(Int64, digits*log2(10)) + 8@everywhere setprecision(BigFloat, $precision)n = nworkers();s = @distributed (+) for i = 1:nk = big(i-1)s0 = big(10.0)s1 = big(0.0)while s1 != s0Mk = factorial(6k) / (factorial(3k) * factorial(k)^3)Lk = 545140134k + 13591409Xk = (-262537412640768000)^ks0 = s1s1 += Mk * Lk / Xkk += nends1endc = 426880 * sqrt(big(10005))return c/sum(s)
end@time CalcPi_P(10000);0.077727 seconds (1.26 k allocations: 128.000 KiB)

多进程方式消耗太多的内存等电脑资源,完全可以改用更简单的多线程方式,如下面的代码所示。测试用的电脑的cpu是4核8线程。多线程方式对程序性能提高的程度基本上和多进程一样。

#测试用的电脑: cpu E3 1230V2(4核8线程) 3.3GHZ 8GB内存
function CalcPi_T(digits) #多线程方式 [julia.exe -t8] 开启8个线程precision = ceil(Int64, digits*log2(10)) + 8setprecision(BigFloat, precision)n = Threads.nthreads();s = zeros(BigFloat, n)Threads.@threads for i = 1:nk = big(i-1)s0 = big(10.0)s1 = big(0.0)while s1 != s0Mk = factorial(6k) / (factorial(3k) * factorial(k)^3)Lk = 545140134k + 13591409Xk = (-262537412640768000)^ks0 = s1s1 += Mk * Lk / Xkk += nends[i] = s1endc = 426880 * sqrt(big(10005))return c/sum(s)
end@time CalcPi_T(10000);0.066251 seconds (53.09 k allocations: 25.495 MiB)

PI值:

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706
7982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381
9644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412
7372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160
9433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949
1298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051
3200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892
3542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318
5950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473
0359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019
8938095257201065485863278865936153381827968230301952035301852968995773622599413891249721775283479131
5155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240
1285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949
1293313677028989152104752162056966024058038150193511253382430035587640247496473263914199272604269922
7967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029
5532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380
0081647060016145249192173217214772350141441973568548161361157352552133475741849468438523323907394143
3345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843
8382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118
6306744278622039194945047123713786960956364371917287467764657573962413890865832645995813390478027590
0994657640789512694683983525957098258226205224894077267194782684826014769909026401363944374553050682
0349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813
8268683868942774155991855925245953959431049972524680845987273644695848653836736222626099124608051243
8843904512441365497627807977156914359977001296160894416948685558484063534220722258284886481584560285
0601684273945226746767889525213852254995466672782398645659611635488623057745649803559363456817432411
2515076069479451096596094025228879710893145669136867228748940560101503308617928680920874760917824938
5890097149096759852613655497818931297848216829989487226588048575640142704775551323796414515237462343
6454285844479526586782105114135473573952311342716610213596953623144295248493718711014576540359027993
4403742007310578539062198387447808478489683321445713868751943506430218453191048481005370614680674919
2781911979399520614196634287544406437451237181921799983910159195618146751426912397489409071864942319
6156794520809514655022523160388193014209376213785595663893778708303906979207734672218256259966150142
1503068038447734549202605414665925201497442850732518666002132434088190710486331734649651453905796268
5610055081066587969981635747363840525714591028970641401109712062804390397595156771577004203378699360
0723055876317635942187312514712053292819182618612586732157919841484882916447060957527069572209175671
1672291098169091528017350671274858322287183520935396572512108357915136988209144421006751033467110314
1267111369908658516398315019701651511685171437657618351556508849099898599823873455283316355076479185
3589322618548963213293308985706420467525907091548141654985946163718027098199430992448895757128289059
2323326097299712084433573265489382391193259746366730583604142813883032038249037589852437441702913276
5618093773444030707469211201913020330380197621101100449293215160842444859637669838952286847831235526
5821314495768572624334418930396864262434107732269780280731891544110104468232527162010526522721116603
9666557309254711055785376346682065310989652691862056476931257058635662018558100729360659876486117910
4533488503461136576867532494416680396265797877185560845529654126654085306143444318586769751456614068
0070023787765913440171274947042056223053899456131407112700040785473326993908145466464588079727082668
3063432858785698305235808933065757406795457163775254202114955761581400250126228594130216471550979259
2309907965473761255176567513575178296664547791745011299614890304639947132962107340437518957359614589
0193897131117904297828564750320319869151402870808599048010941214722131794764777262241425485454033215
7185306142288137585043063321751829798662237172159160771669254748738986654949450114654062843366393790
0397692656721463853067360965712091807638327166416274888800786925602902284721040317211860820419000422
9661711963779213375751149595015660496318629472654736425230817703675159067350235072835405670403867435
1362222477158915049530984448933309634087807693259939780541934144737744184263129860809988868741326047
2156951623965864573021631598193195167353812974167729478672422924654366800980676928238280689964004824
3540370141631496589794092432378969070697794223625082216889573837986230015937764716512289357860158816
1755782973523344604281512627203734314653197777416031990665541876397929334419521541341899485444734567
3831624993419131814809277771038638773431772075456545322077709212019051660962804909263601975988281613
3231666365286193266863360627356763035447762803504507772355471058595487027908143562401451718062464362
6794561275318134078330336254232783944975382437205835311477119926063813346776879695970309833913077109
8704085913374641442822772634659470474587847787201927715280731767907707157213444730605700733492436931
1383504931631284042512192565179806941135280131470130478164378851852909285452011658393419656213491434
1595625865865570552690496520985803385072242648293972858478316305777756068887644624824685792603953527
7348030480290058760758251047470916439613626760449256274204208320856611906254543372131535958450687724
6029016187667952406163425225771954291629919306455377991403734043287526288896399587947572917464263574
5525407909145135711136941091193932519107602082520261879853188770584297259167781314969900901921169717
3727847684726860849003377024242916513005005168323364350389517029893922334517220138128069650117844087
4519601212285993716231301711444846409038906449544400619869075485160263275052983491874078668088183385
1022833450850486082503930213321971551843063545500766828294930413776552793975175461395398468339363830
4746119966538581538420568533862186725233402830871123282789212507712629463229563989898935821167456270
1021835646220134967151881909730381198004973407239610368540664319395097901906996395524530054505806855
0195673022921913933918568034490398205955100226353536192041994745538593810234395544959778377902374216
1727111723643435439478221818528624085140066604433258885698670543154706965747458550332323342107301545
9405165537906866273337995851156257843229882737231989875714159578111963583300594087306812160287649628
6744604774649159950549737425626901049037781986835938146574126804925648798556145372347867330390468838
3436346553794986419270563872931748723320837601123029911367938627089438799362016295154133714248928307
2201269014754668476535761647737946752004907571555278196536213239264061601363581559074220202031872776
0527721900556148425551879253034351398442532234157623361064250639049750086562710953591946589751413103
4822769306247435363256916078154781811528436679570611086153315044521274739245449454236828860613408414
8637767009612071512491404302725386076482363414334623518975766452164137679690314950191085759844239198
6291642193994907236234646844117394032659184044378051333894525742399508296591228508555821572503107125
7012668302402929525220118726767562204154205161841634847565169998116141010029960783869092916030288400
2691041407928862150784245167090870006992821206604183718065355672525325675328612910424877618258297651
5795984703562226293486003415872298053498965022629174878820273420922224533985626476691490556284250391
2757710284027998066365825488926488025456610172967026640765590429099456815065265305371829412703369313
7851786090407086671149655834343476933857817113864558736781230145876871266034891390956200993936103102
9161615288138437909904231747336394804575931493140529763475748119356709110137751721008031559024853090
6692037671922033229094334676851422144773793937517034436619910403375111735471918550464490263655128162
2882446257591633303910722538374218214088350865739177150968288747826569959957449066175834413752239709
6834080053559849175417381883999446974867626551658276584835884531427756879002909517028352971634456212
9640435231176006651012412006597558512761785838292041974844236080071930457618932349229279650198751872
1272675079812554709589045563579212210333466974992356302549478024901141952123828153091140790738602515
2274299581807247162591668545133312394804947079119153267343028244186041426363954800044800267049624820
1792896476697583183271314251702969234889627668440323260927524960357996469256504936818360900323809293
4595889706953653494060340216654437558900456328822505452556405644824651518754711962184439658253375438
8569094113031509526179378002974120766514793942590298969594699556576121865619673378623625612521632086
2869222103274889218654364802296780705765615144632046927906821207388377814233562823608963208068222468
0122482611771858963814091839036736722208883215137556003727983940041529700287830766709444745601345564
1725437090697939612257142989467154357846878861444581231459357198492252847160504922124247014121478057
3455105008019086996033027634787081081754501193071412233908663938339529425786905076431006383519834389
3415961318543475464955697810382930971646514384070070736041123735998434522516105070270562352660127648
4830840761183013052793205427462865403603674532865105706587488225698157936789766974220575059683440869
7350201410206723585020072452256326513410559240190274216248439140359989535394590944070469120914093870
0126456001623742880210927645793106579229552498872758461012648369998922569596881592056001016552563756
78574

[Julia语言]使用Chudnovsky 算法快速计算圆周率 Pi (π) 值相关推荐

  1. [JuliaDelphi]快速计算圆周率 Pi (π) 值

    算法参考自: 计算圆周率Pi(π)值,精确到小数点后10000位 - 圆周率10000位 - C++ 爱好者 分别以Julia 1.72和Delphi 10.3写的算法如下面所示.在一台10年的老电脑 ...

  2. Python一句话实现秦九韶算法快速计算多项式的值

    关于秦九韶算法快速计算多项式值的原理描述请参考之前推送的文章Python使用秦九韶算法求解多项式的值.本文重点演示Python函数reduce()和lambda表达式的用法.代码没加注释,如果不好理解 ...

  3. c语言计算pi后1000位,计算圆周率 Pi (π)值, 精确到小数点后 10000 位

    大家都知道π=3.1415926--无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题.现在有了电脑, 这个问题就简单了. 电脑可以利用级数计算出很多高精度的值, 有关级数的问题请 ...

  4. 计算圆周率 Pi (π)值

    大家都知道π=3.1415926--无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题.现在有了电脑, 这个问题就简单了. 电脑可以利用级数计算出很多高精度的值, 有关级数的问题请 ...

  5. c语言用for或while计算,C语言趣味编程:使用while循环结构计算圆周率pi

    循环结构是编程语言中的一种基本程序结构,C语言中有两种表示方法,分别可通过for循环和while循环结构实现.上篇文章已经讲了for循环的使用方法,详细请参考: 这次通过一个计算圆周率pi的例子给大家 ...

  6. C语言通过傅里叶展开式计算圆周率PI的代码

    把做工程过程比较重要的一些代码段记录起来,下面的代码是关于C语言通过傅里叶展开式计算圆周率PI的代码. #include #include <math.h> using namespace ...

  7. 名词解释 算法的有限性_欲借助 FFT 算法快速计算两有限长序列的线性卷积,则过程中要调用 ( ) 次 FFT 算法_学小易找答案...

    [单选题]计算 N=2 L ( L 为整数)点的按时间抽取基 -2FFT 需要 ( ) 级蝶形运算 [单选题]Les étudiants chinois, une fois arrivés en Fr ...

  8. python计算圆周率_Python实现计算圆周率π的值到任意位的方法示例

    本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周率π的值. 二.算法:马青公式 π/4=4arcta ...

  9. Python实现计算圆周率π的值到任意位的方法示例

    Python实现计算圆周率π的值到任意位的方法示例 本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周 ...

最新文章

  1. JAVA的get post 区别
  2. JavaScript 下载大文件解决方案(Blob+OjbectURL)
  3. System.Web.HttpRequestValidationException: 从客户端(txtName=fd)中检测到有潜在危险的 Request.Form 值...
  4. 【美文】接受生活的无力感,才能更好的出发
  5. linux中ls文件内存大小,Linux下用ls和du命令查看文件以及文件夹大小
  6. js--window关闭事件
  7. Eclipse创建资源文件
  8. ireport导出pdf后中文字符全部不显示(已解决)
  9. 8255A置位复位控制字
  10. 分布式概念及相关的名词定义
  11. OC Foundation框架 集合
  12. 云+智能的羊群效应显现,百度用“云智一体”坐定头羊位置
  13. HDU2370——Convert Kilometers to Miles
  14. 了解.net框架 MonoRail
  15. 判断并求出两个圆的交点(平面几何)
  16. Linux 服务器设置成支持中文
  17. 学习xpath解析用的代码
  18. html5 智能家居 页面,内容二 - html5智能家居网站模板
  19. php将时间戳转换为时间格式,php时间戳如何转换为时间格式
  20. 二维数组vector初始化c++

热门文章

  1. 《数据结构 C++ 语言描述》电子书下载 -(百度网盘 高清版PDF格式)
  2. fabu gewewew
  3. java限制手机号码,更严格的手机号码正则表达式写法 --java
  4. 与智者同行,你会不同凡响;与高人为伍,你能登上巅峰
  5. 一次解决Landsat 、哨兵Sentinel 21个光谱指数
  6. k8s中java内存泄漏,Kubernetes 案例分享:如何避免 JVM 应用内存耗尽
  7. unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)
  8. 魔方二阶玩法[图解]
  9. 内网邮件JAVA535报错_利用网易邮箱发送邮件535报错处理
  10. php脚本的执行过程(编译与执行相分离)