date js 半年_JavaScript Date对象

Date对象

源码下载

最初接触编程,没有接触过非常讲究时间控制的领域,往往对时间没有概念,单片机编程,嵌入式开发,操作系统,无人及姿态控制往往会关注毫秒ms、微秒us级的时间概念。

什么是并行,什么是串行,什么是并发。计算机的CPU是逐条执行指令的,每条指令都要花费一定时间,只不过短小的程序执行的太快,几个毫秒ms,甚至微秒,没有时间的感觉。

本节课利用Javascript内置的对象Date对象,来测试一段代码的执行时间。

Date对象需要通过new和构造函数Date()创建,创建完成后可以调用对象的大量内置默认支持属性和方法。Javascript语言引入Date对象的目的就是为了处理编程中的时间问题,

该对象依赖Javascript程序的运行环境,可以通过浏览器解析或者nodejs解释器。

下面的代码示例是利用Javascript内置对象Date测试程序性能。

//测试for循环100万次计算加法运算时间9 let S =0;10 let T0 =newDate();//创建对象Date,返回此刻时间赋值给变量T0for(let i =0;i<1000;i++){//外循环1000for(let i =0;i<1000;i++){//内循环100013 S +=1;14 }

15 }

16 let T1 =newDate();//创建对象Date,返回此刻时间赋值给变量T117 document.write(T1-T0);//求解T1-T0时间差,便是for运行时间,单位:ms

体验测试

不改变程序多次刷新浏览器查看运行时间变化,是稳定,还是波动。可以尝试更改for循环程序中的循环次数控制参数1000,刷新浏览器查看时间变化。

代码解析

代码比较简单,直接来看第十行创建Date对象的代码let T0 = new Date();执行该语句后,

从对象的角度看创建了一个对象,这样的话可以通过d对象调用Date的相关方法和属性。

该对象也是一个是时间值,这个主要体现在利用运算符运算的时候,比如一个字符串类型数据和数字类型数据进行==比较运算,

Javascript系统会首先把它们转换成同一种数据类型再进行比较,

两个对象进行减法计算,首先要做的就是把对象类型数据转化为数字类型。

可能很多教程说它是时间,那是字符串格式时间,还是数值类型的时间。使用typeof关键字测试他就是对象,

那么对象通过什么样的机制,能够转化成数字类型数据,如果不明白,先不用管,先记住Date的用法。随着学习的深入,尝试去使用各种类型的构造函数自然会明白。

T0是当前的时间,也是一个对象。T0是执行for循环的开始时间,T1是for循环执行结束的时间。

两个变量时间差就是for循环的执行时间,在浏览器网页上显示的时间数值是整数,单位是:ms。

Math对象方法

toString()

执行语句new Date();返回的是一个对象,从数据的角度看,是对象类型数据,值就是时间,Date对象提供了方法toString()可以把对象类型数据

转化为字符串类型数据。

应用案例

//T0对象转字符串

let str = T0.toString();

getDate()

通过该方法可以从对象获得本月第几号的日期,比如今天是3月13号,那么T0.getDate()的返回值是一个数字类型数据13

getMonth()

同getDate()方法使用规则,只是返回的数据是今天的月份。

方法总结表格

方法

返回

数据类型

getHours()

number

getMinutes()

number

getSeconds()

number

getFullYear()

number

getMonth()

number

getDay()

number

扩展

时间单位

相邻单位进制是1000,比如1s=10^3ms,时间级别依次下降

名称

毫秒

微秒

纳秒

单位

s

ms

us

ns

CPU的频率级别GHz,执行一条指令的时间级别是纳秒ns级,单片机的执行速度在us级别,一般一条Javascript语句会被解释器编译成几条指令

下面做一个假设,CPU执行一条指令3ns,for循环结构被编译后假设执行一次是3条指令,100万次,就是3X10^6条指令,那么执行时间就是9X10^6ns,换算单位就是9ms

以上数字全为假设,具体值有偏差,但是在数量级的层面基本是符合实际的,有兴趣的话可以多了解CPU结构和操作系统

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

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

相关文章

SQL Server代理的阶梯 - 第2级:作业步骤和子系列

作者&#xff1a;Richard Waymire&#xff0c;2017/10/11&#xff08;第一版&#xff1a;2011/02/17&#xff09; 原文链接&#xff1a;http://www.sqlservercentral.com/articles/SQLAgent/JobStepsandSubsystems/72268/ 该系列 本文是“Stairway系列&#xff1a;SQL Server代…

java动画闪烁_优化Java动画编程中的显示效果

Java动画编程有多种实现方法&#xff0c;但它们实现的基本原理是一样的&#xff0c;即在屏幕上画出一系列的帧来造成运动的感觉。Java多线程技术是Java动画编程中普遍运用的技术&#xff0c;它在控制动画程序的流程和动画的显示效果方面起着重要的作用。Java动画编程中的动画闪…

Visual C++ 2011-5-20

一.LockFile和UnlockFile 锁定文件部分区域&#xff0c;防止其他程序进行该部分区域的读写 #include <windows.h> #include <stdio.h>void main() {HANDLE hFile;HANDLE hAppend;DWORD dwBytesRead, dwBytesWritten, dwPos;BYTE buff[4096];// Open the existin…

如何快速将文本中的tab更换成逗号(图文详解)

不多说&#xff0c;直接上干货&#xff01; 现有一份数据如下。 下载日志数据并分析 到搜狗实验室下载用户查询日志 1) 介绍 搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。为进行中文搜索引擎用户行为…

java中矩阵怎么打印_在Java编程中打印二维数组或矩阵

在本文中&#xff0c;我们将尝试以与通常在纸上书写相同的方式在控制台上打印数字数组或数字矩阵。为此&#xff0c;逻辑是一个接一个地访问数组的每个元素&#xff0c;并使其以空格分隔打印&#xff0c;当行到达矩阵中的emd时&#xff0c;我们还将更改行示例public class Prin…

Commit Monitor–svn监控工具

SVN更改通知的工具&#xff0c;在这里分享给大家。 自己负责的模块代码有时被同事修改&#xff0c;但是没有知会&#xff0c;也不容易了解到具体的改动内容&#xff0c;可能造成各种各样的问题。这里推荐一个工具Commit Monitor&#xff0c;可以监控svn仓库的提交记录&#xff…

用python发送email

#coding:utf-8from email.header import Headerfrom email.mime.text import MIMETextfrom email.utils import parseaddr, formataddrimport smtplibdef _format_addr(s): name, addr parseaddr(s) return formataddr((Header(name, utf-8).encode(), addr))#发件人地址…

java 获取mac地址 乱码_Java:开机获取Mac地址问题

server.jar设置为开机自启动&#xff0c;启动时会执行getLinuxMac()方法获取本机Mac地址&#xff1a;private static String getLinuxMac() {StringBuffer sb new StringBuffer();try {String str "ifconfig | grep ether | sed -n 1p | awk -F {print $2}";Strin…

WinCE6.0学习之EBoot源码分析----startup.s(三)

下面将详细叙述MMU的设置&#xff0c;也是本人花费时间最多的一部分内容&#xff0c;无论是2410、6410甚至是Cortex-A8核的ARM&#xff0c;MMU的设置基本都一样&#xff0c;所以移植时这部分可以直接搬过来&#xff0c;只需要更改全局内存映射表的映射关系即可。<?xml:name…

oracle 察看用户是否被锁,解锁以及改密码

以管理员身份登陆察看用户状态&#xff08;是否被锁&#xff09; select * from dba_users where usernameuser1 解锁 ALTER USER user1 ACCOUNT UNLOCK; 修改用户密码 alter user user1 identified by newpass;转载于:https://www.cnblogs.com/lcword/p/8232042.html

java json删除节点_指定json的某个节点进行增、删、改

有时候我们需要对json结构的数据进行更新&#xff0c;或增&#xff0c;或改&#xff0c;或删。当json层级比较复杂时操作起来是比较麻烦的&#xff0c;得一层层找下去找到要更新的节点才能操作它。我用python语言封装了一个类&#xff0c;提供三个函数分别用于增删改json的目标…

高级 Linux 命令精通指南(2)

xargs 大多数 Linux 命令都会产生输出&#xff1a;文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办&#xff1f;例如&#xff0c;file 命令显示文件类型&#xff08;可执行文件、ascii 文本等&#xff09;&#xff1b;您可以处理输出&a…

java如何实现Socket的长连接和短连接

讨论Socket必讨论长连接和短连接 一、长连接和短连接的概念 1、长连接与短连接的概念&#xff1a;前者是整个通讯过程&#xff0c;客户端和服务端只用一个Socket对象&#xff0c;长期保持Socket的连接&#xff1b;后者是每次请求&#xff0c;都新建一个Socket,处理完一个请求就…

java怎么更改id名_java - 尽管ID已更改为_id,但列'_id'不存在

我已经将我的ID重命名为_id&#xff0c;但仍然得到column _id does not exist ...我错过了什么吗&#xff1f;MyDatabaseelper.javapublic class MyDatabaseHelper extends SQLiteOpenHelper {public static final int DATABASE_VERSION1;public static final String DATABASE_…

NTP搭建(原创)

server 127.127.1.0 fudge 127.127.1.0 stratum 11 driftfile /var/lib/ntp/drift broadcastdelay 0.008 上面是自己作为ntp服务器简单配置 server 192.168.1.10 prefer driftfile /var/lib/ntp/drift broadcastdelay 0.008 上面是选择其他服务器作为ntp服务器简单配置 完事后…

疯狂的java 目录_疯狂创客圈 JAVA 高并发 总目录

无编程不创客&#xff0c;疯狂创客圈&#xff0c;一大波编程高手正在交流、学习中!疯狂创客圈&#xff1a; JAVA 高并发 研习社群&#xff0c; QQ群&#xff1a;104131248(已满) 236263776 (请加此群)疯狂创客圈 经典图书 &#xff1a; 《Netty Zookeeper Redis 高并发实战…

也谈云计算

云计算的介绍和讨论不时见诸于报章网端&#xff0c;但是基本上是各说各话&#xff0c;众说纷纭中让大家仍然感觉云里雾里&#xff0c;不见明路。 本文没有涵盖全部的观点&#xff0c;但却希望提供一种思路&#xff0c;大家共同探讨云的建设。云计算是英文Cloud Computing的翻译…

ubuntu设置静态ip

一、 编辑interfaces文件 &#xff08;需要修改文件权限&#xff09; sudo vi /etc/network/interfaces 二、将一下内容添加进去 auto lo iface lo inet loopback auto ens33 iface ens33 inet static address 192.168.0.1&#xff08;要设置的静态ip&#xff09; netmas…

车辆入库java程序_java扫描入库及出库,基于谷歌类开发.仅提供完整代码 连接SQL使用,...

java扫描入库及出库&#xff0c;基于谷歌类开发.仅提供完整代码 连接SQL使用,需要自行制作中心服务器&#xff0c;中心服务器代码在本人另一实例里面&#xff0c;请自行下载【实例简介】扫描入库及出库&#xff0c;基于谷歌类开发.仅提供完整代码【实例截图】【核心代码】//直接…

用phpmyadmin更改root密码的方法

首先用root账号登陆phpmyadmin&#xff0c;然后点击左侧进入mysql数据库&#xff0c;在顶部点击“mysql”进入sql输入界面。输入以下命令&#xff1a; update user set passwordpassword(root) where Userroot root为你希望修改的密码&#xff0c;切记不要在数据库中直接手工修…