[JavaScript] 用电脑计算圆周率评估计算性能

news2024/11/23 9:27:41

据说全球第一台计算机是在1946年面世的,那它的计算性能是怎样的,至今2022年,发展这么多年,现在的普通计算机性能又是怎样的呢,接下来做一个实验,评估计算性能

文章目录

  • 1. 设计
  • 2. 编程
  • 3. 测试

1. 设计

先写一个页面文件index.html,页面代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
		<title>计算圆周率 PI</title>
	</head>
	<body>
		<div id="box"></div>
		<div style="padding: 10px;">
			<input type="range" disabled id="box3" value="0" /><span id="box4"></span>
			<div id="box2" style="height: 40px;"></div>
		</div>
		<div>
			<button id="btn1">开始</button>
			<button id="btn2" disabled>停止</button>
		</div>
		<script>
			window.onload=()=>{
				//...处理的脚本
			}
		</script>
	</body>
</html>

2. 编程

再写好处理的脚本,代码如下

let isContinue = false;
const elements = {};
const Max = 100000;

['box','box2','box3','box4','btn1','btn2'].forEach(box=>elements[box]=document.getElementById(box));
elements.box.innerText = `计算 PI=${Math.PI}`;
elements.box3.setAttribute('value',0);
elements.box3.setAttribute('max',Max);
//开始按钮点击事件
elements.btn1.onclick=()=>{
	elements.btn1.setAttribute('disabled',true);
	elements.btn2.removeAttribute('disabled');
	
	let p = 0;
	let c = 0;			
	let t = Date.now();
	const calc = () => {
		//...此处省略计算圆周率的
		
		//更新显示
		let time = (Date.now()-t)/1000;
		elements.box2.innerText = `当前值:${res}\n耗时:${time.toFixed(1)}s`;
		elements.box3.setAttribute('value',c);
		elements.box4.innerText = `${c}/${Max}`;
		
		if(!isContinue) return;
		if(c<Max){
			c++
			setTimeout(calc,1);
			return;
		}
		elements.btn2.setAttribute('disabled',true);
	};
	isContinue=true;
	calc();
};
//停止按钮点击事件
elements.btn2.onclick=()=>{
	elements.btn1.removeAttribute('disabled');
	elements.btn2.setAttribute('disabled',true);
	
	isContinue=false;
};

然后,就是找计算圆周率的公式了,将如下代码写到上面注释了省略代码以下

let n = c*2;
let a = (n+2)*(n+3)*(n+4);
if (c%2==0) p += 1/a;
else p -= 1/a;

let res = 3 + 4*p;

💡 小提示
计算圆周率的公式是:PI = 3 + 4 × ( 1÷(2×3×4) - 1÷(4×5×6) + 1÷(6×7×8) … )
从中找出规律,会发现,其中c是循环次数,p是括号内累计的数,res是计算结果

3. 测试

最后,用浏览器打开页面index.html看看,点击开始按钮,细品一杯茶,等待测试结果,计算完的话,至少要等到10分钟哦
在这里插入图片描述

💡 小提示
可以用不同电脑浏览器或者手机浏览器上测试,会发现测试结果中的 相同时间内 计算耗时不一样,肯定是完成相同的数量100000 内耗时越短的,就是计算最快的,也是计算性能最好的

💡要注意
此方法是测试评估浏览器的网页脚本处理速度的,就相当于电脑的计算速度吧,
计算精度位数是有限的,超过精度位数是没办法计算的,只有用笨方法,类似与小学数学里简单的除法,但是这样算得慢,因此,计算超过精度位数的数是很耗时间的,圆周率是无理数,可见计算圆周率是永远没有止境的吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[第十三篇]——Docker Compose

Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解…

G1D18-WarshallFloyd课程报告matlab下载

今天先从算法开始吧嘿嘿~ 一、DP &#xff08;一&#xff09;Warshall求闭包 1、DP大概看明白啦~ 2、一会再看一下基于邻接表的暴搜 &#xff08;二&#xff09;Floyd完全最短路径的Floyd算法 欸嘿~~基本上好啦还差一点图的遍历晚上问问同学吧&#xff01; 啊哈大概看了一…

BUUCTF·[WUSTCTF2020]大数计算·WP

BUUCTF在线评测 (buuoj.cn) 附件 flag等于 wctf2020{Part1-Part2-Part3-Part4} 每一Part都为数的十六进制形式&#xff08;不需要0x)&#xff0c;并用 - 连接 Part1 2020*2019*2018* ... *3*2*1 的前8位 Part2 520^1314 2333^666 的前8位 Part3 宇宙终极问题的答案 x,y,z绝…

CF461B Appleman and Tree题解

洛谷题面 感觉是非常经典的一道题&#xff0c;最近好像总是见到&#xff0c;今天也算给它做了&#xff0c;发一篇题解来记录一下。 这道题是一道树形 DP 题&#xff0c;设 f[u][0/1]f[u][0/1]f[u][0/1] 表示 uuu 点属于一个无黑点 /// 有且仅有一个黑点的联通块时的方案数。我…

【HDR】Deep high dynamic range imaging of dynamic scenes

文章目录一、贡献二、数据集构建三、算法框架3.1 对齐模块3.2 合成模块3.3 损失函数四、实验一、贡献 Paper&#xff1a; Deep high dynamic range imaging of dynamic scenes Code&#xff1a;https://github.com/TH3CHARLie/deep-high-dynamic-range 首次提出使用机器学习方…

Pdfjs使用

pdfjs使用一、下载二、Springboot引入pdfjs三、利用PDFJS预览pdf文件并加水印四、后端将pdf添加水印参看链接一、下载 pdfjs官方地址 二、Springboot引入pdfjs 针对于pdfjs方面有用的只是pdf这个包下面和viewer.html这个html页面viewer.html是我们用来展示pdf的页面不需要改但…

高压功率放大器在超声悬浮中的应用研究

高压功率放大器的叫法对于不同的人来说是完全不同的&#xff0c;有人叫功率放大器&#xff0c;也有人叫电压放大器&#xff0c;但它们都是指同一个电子测量仪器设备&#xff0c;主要是指内部能够拥有电压和功率放大电路&#xff0c;可以把微弱的外部信号进行放大输出的放大器。…

在华为云 OSC 上快速部署 EMQX MQTT 集群

EMQX Kubernetes Operator 是 EMQ 发布的一个封装、部署和管理工具&#xff0c;也是一个特定的应用控制器&#xff0c;方便 DevOps 人员在 Kubernetes 上编排 EMQX MQTT 消息服务集群&#xff0c;管理其生命周期。 华为云原生基础设施&#xff08;云容器引擎 CCE、容器镜像服务…

索引数据结构千千万 , 为什么B+Tree独领风骚

索引的由来 大数据时代谁掌握了数据就是掌握了流量&#xff0c;就是掌握的号召力。面对浩瀚的数据如何存储并非难事&#xff0c; 难点在于如何在大数据面前查询依旧快如闪电&#xff01; 这时候索引就产生了&#xff0c;索引的产生主要还是借鉴于图书管理员书签的功能。在大数…

谷歌、微软、Meta?谁才是 Python 最大的金主?

你知道维护 Python 这个大规模的开源项目&#xff0c;每年需要多少资金吗&#xff1f; 答案是&#xff1a;约 200 万美元&#xff01; PSF&#xff08;Python 软件基金会&#xff09;在 2022 年 6 月发布了 2021 的年度报告&#xff0c;其中披露了以下这份支出明细&#xff08;…

大家介绍一篇学生选课系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

若依框架字典配置以及使用(结合vue和emelent)

一&#xff1a;字典数据创建&#xff08;我们公司是后端做的&#xff0c;前端不用管&#xff09; 1.首先新建要指定的默认角色 &#xff08;1&#xff09;必须用管理员账号登录才能看到角色管理 &#xff08;2&#xff09;具体怎写&#xff0c;可以参考已有的数据&#xff08…

低代码平台中的“模型驱动”与“表单驱动”有何区别?

低代码定义&#xff1a; 低代码是近几年比较火的一种应用程序快速开发方式&#xff0c;它能帮助用户在开发软件的过程中大幅减少手工编码量&#xff0c;并通过可视化组件加速应用程序的高效交付。&#xff08;低代码的定义来自Forrester报告&#xff0c;被认为是低代码一词的起…

坐标的变换

在QPainter可以使用以下函数变换坐标&#xff1a; QPainter&#xff1a;&#xff1a;scale()缩放坐标系统QPainter&#xff1a;&#xff1a;rotate()顺时针旋转QPainter&#xff1a;&#xff1a;translate()平移QPainter&#xff1a;&#xff1a;shear()围绕原点来扭曲坐标系统…

[附源码]java毕业设计小超市进销存管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

fmllr--学习笔记

预备知识&#xff1a; 说话人自适应技术是利用特定说话人数据对说话人无关(Speaker Independent,SI)的码本进行改造&#xff0c;其目的是得到说话人自适应(SPeaker Adapted, SA)的码本来提升识别性能。在某个说话人的训练数据足够多的时候&#xff0c;针对当前说话人数据采用传…

m基于3GPP-LTE通信网络的认知家庭网络Cognitive-femtocell性能matlab仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 本系统所涉及到的几个主要模块&#xff0c;具体有如下几个模块&#xff1a; A. Simulation Flow&#xff1a;仿真流程 B. Initialization&#xff1a;初始化 C. Mobility Model&…

【每日两题】day 01 组队竞赛 删除公共字符

链接&#xff1a;组队竞赛__牛客网 (nowcoder.com) 解题思路 该题目就是求所有队员水平的数组中的尽可能大的水平之和 因为每个队伍都是三个人&#xff0c;平均水平值肯定是排序后水平中间的值 import java.util.*;public class Main {public static void main(String[] ar…

VisualDrag低代码拖拽模板

目录背景技术&文档二开优化方案1. 优化侧边栏2. 优化图片插入3. 新增可插入画布的组件4. 解决组件鼠标默认事件冲突的问题数据保存对接&页面生成预览保存对接生成预览源码下载背景 接到一个需求做一个拖拽模板低代码生成界面&#xff08;如上图&#xff09;&#xff0c…

项目交付过程中,进度失控的原因有哪些?

在项目交付过程中&#xff0c;会出现项目交付的进度与计划有较大的偏差&#xff0c;导致这种偏差的原因往往是多种多样的&#xff0c;一般常见的引起进度延期的原因有哪些&#xff1f; 1、计划不清晰 项目开始前必须有个计划&#xff0c;工作思路必须事前理清。 项目经理最…