Perl, Python, Erlang, C语言运行速度的比较,, 主要是通过蒙特卡罗
Perl, Python, Erlang, C语言运行速度的比较,, 主要是通过蒙特卡罗
主要是通过蒙特卡罗法来计算圆周率。代码如下:
1) pi.pl:
$time1 = time();foreach (1..20000000) { my($x, $y) = (rand(), rand()); if(sqrt($x ** 2 + $y ** 2) < 1) { $total += 1; } }$pi = 4.0 * $total / 20000000;$time2 = time();print "Pi = " , $pi, " time = ", $time2 - $time1;
Perl脚本运行结果如下,2千万次平均执行时间是27秒左右:
2)pi.py
import randomimport datetimeimport mathstarttime = datetime.datetime.now()total = 0for i in xrange(20000000): x, y = random.random(), random.random() if math.sqrt(x ** 2 + y ** 2) < 1: total += 1pi = 4.0 * total / 20000000endtime = datetime.datetime.now()print "pi = ", pi , " time = ", (endtime - starttime).seconds
Python运行结果如下,2千万次平均执行时间是30秒左右:
3) pi.erl
-module(pi).-export([pi/1]).pi(N) -> pi(N, N, 0). pi(N, 0, Total) -> 4.0 * Total / N;pi(N, I, Total) -> X = random:uniform(), Y = random:uniform(), R = math:sqrt(X * X + Y * Y), if R < 1 -> pi(N, I - 1, Total + 1); true -> pi(N, I - 1, Total) end.
Erlang运行如下,2千万次平均执行时间是30秒左右:
4) pi.c
#include <stdio.h>#include <stdlib.h>#include <time.h> #include <math.h>int main() { time_t start_time, end_time; double elapsed_time; double x, y, pi; long i , total; total = 0; srand((unsigned)time(0)); time(&start_time); for(i = 0 ; i < 20000000; i ++ ) { x = rand() / (double)(RAND_MAX); y = rand() / (double)(RAND_MAX); if (sqrt(x * x + y * y) < 1) { total += 1; } } pi = 4.0 * total / 20000000; time(&end_time); elapsed_time = difftime(end_time, start_time); printf(" total = %d, pi = %f, time = %f", total ,pi, elapsed_time); }
Python, Erlang 速度相当, Perl稍微快一丁点, C语言是它们的10倍。
Perl, Python, Erlang, C语言运行速度的比较
相关内容
- python3 中引用 HTMLTestRunner.py 模块的注意事项,,HTMLTest
- [Python3]读写Excel - openpyxl库,,什么是openpyx
- python 获取目录&拼接目录的方法,,获取当前目录
- 銆怭ython銆戝瓙鍩熷悕鏌ヨ鑴氭湰,,鏍囩锛?a hre
- python接口测试笔记(控制台输出结果),,本文仅是学习
- Python-爬虫-针对有frame框架的页面,,有的页面会使用f
- python 有关矩阵行列的存取 np.array,,初始化a = ran
- python----类的定义、继承与重定义,, 1 #!/usr/
- python 精确计算与向上取整 decimal math.ceil,,1. 精确
- 利用python数据分析panda学习笔记之DataFrame,,2 DataFram
评论关闭