首页 > 其他分享 >go-记录耗时

go-记录耗时

时间:2023-04-11 17:58:35浏览次数:37  
标签:loc 记录 wall hasMonotonic 耗时 ext go bit 33

r := time.Now()
//运行间隔
d := time.Since(r)

 

time.Now结构体

type Time struct {
     //以下来自机翻 //wall和ext分别对壁时间秒、壁时间纳秒和壁时间纳秒进行编码,      //以及可选的以纳秒为单位的单调时钟读取。      // //wall从高位到低位对1位标志(hasMonotonic)进行编码, //33位秒字段和30位壁时间纳秒字段。 //纳秒字段在[0999999999]的范围内。      //如果hasMonotonic位为0,则33位字段必须为零     //并且自1年1月1日起的完整有符号64位墙秒存储在ext。      //如果hasMonotonic位为1,则33位字段保持33位      //自1885年1月1日以来的无符号墙秒数,并且ext持有      //有符号的64位单调时钟读取,自进程开始以来为纳秒。 // wall and ext encode the wall time seconds, wall time nanoseconds, // and optional monotonic clock reading in nanoseconds. // // From high to low bit position, wall encodes a 1-bit flag (hasMonotonic), // a 33-bit seconds field, and a 30-bit wall time nanoseconds field. // The nanoseconds field is in the range [0, 999999999]. // If the hasMonotonic bit is 0, then the 33-bit field must be zero // and the full signed 64-bit wall seconds since Jan 1 year 1 is stored in ext. // If the hasMonotonic bit is 1, then the 33-bit field holds a 33-bit // unsigned wall seconds since Jan 1 year 1885, and ext holds a // signed 64-bit monotonic clock reading, nanoseconds since process start. wall uint64 ext int64 //loc指定应用于      //确定分钟、小时、月份、日期和年份      //对应于这个时间。      //零位置表示UTC。      //所有UTC时间都用loc==nil表示,从不使用loc==&utcLoc。 // loc specifies the Location that should be used to // determine the minute, hour, month, day, and year // that correspond to this Time. // The nil location means UTC. // All UTC times are represented with loc==nil, never loc==&utcLoc. loc *Location }

 

计算时间差的方法实体

// Sub returns the duration t-u. If the result exceeds the maximum (or minimum)
// value that can be stored in a Duration, the maximum (or minimum) duration
// will be returned.
// To compute t-d for a duration d, use t.Add(-d).
func (t Time) Sub(u Time) Duration {
	if t.wall&u.wall&hasMonotonic != 0 {
		te := t.ext
		ue := u.ext
		d := Duration(te - ue)
		if d < 0 && te > ue {
			return maxDuration // t - u is positive out of range
		}
		if d > 0 && te < ue {
			return minDuration // t - u is negative out of range
		}
		return d
	}
	d := Duration(t.sec()-u.sec())*Second + Duration(t.nsec()-u.nsec())
	// Check for overflow or underflow.
	switch {
	case u.Add(d).Equal(t):
		return d // d is correct
	case t.Before(u):
		return minDuration // t - u is negative out of range
	default:
		return maxDuration // t - u is positive out of range
	}
}

  

 

  

标签:loc,记录,wall,hasMonotonic,耗时,ext,go,bit,33
From: https://www.cnblogs.com/supermarx/p/17307082.html

相关文章

  • SpringBoot整合ElasticSearch8.x 踩坑记录
    背景jdk版本openjdk-17springboot版本2.6.11pom.xml<!--ElasticSearch提供的依赖--><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.6.2</version>......
  • Go面试题——逃逸分析
    Go面试题——逃逸分析一个变量是在堆分配,还是在栈上分配,是经过编译器的逃逸分析之后得出的"结论"。一、逃逸分析是什么?在C语言中,可以使用malloc和free手动在堆上分配和回收内存。在Go语言中,堆内存是通过垃圾回收机制自动管理的,无需开发者指定。那么,Go编译器......
  • python爬虫案列11:爬取双色球历史开奖记录并存储到mysql
    开始之前要先在MySQL创建一个名为spider的数据库,在里面创建一个名caipiao的表,表里面三个字段,data,red,blue点击查看代码importrequestsimportpymysqlfromlxmlimportetree#连接数据库conn=pymysql.connect(host='localhost',port=3306,user='root',password='......
  • 记录UMI框架下文件预览的问题
    1.要想文件预览需要用到file-loader配置 方法:在config文件夹下的config.js文件中添加代码//UMI框架下使用的webpack配置chainWebpack(config){config.module.rule().test(/\.(pdf|svg|docx|doc)$/)//正则校验文件后缀名.use('file-loader?nam......
  • Go语言入门5(map哈希表)
    Map​ 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。​ 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。m......
  • go 总汇
    命令作用gomodinit 生成go.mod文件gomoddownload 下载go.mod文件中指明的所有依赖gomodtidy 整理现有的依赖gomodgrap 查看现有的依赖结构gomodedit 编辑go.mod文件gomodvendo 导出项目所有的依赖到vendor目录gomodverify 校验一个模块是否被篡改过gomodwh......
  • 【go】文件
    file与base64互转packagemainimport( "encoding/base64" "fmt" "io/ioutil")funcmain(){ //file转base64 fileBytes,err:=ioutil.ReadFile("E:\\测试\\test.png")//读取file iferr!=nil{ panic(err) } ......
  • CMake学习记录——下
    转载来自:https://subingwen.cn/cmake/CMake-advanced/1.嵌套的CMake如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个CMakeLists.txt文件(头文......
  • ”file not recognized: file format not recognized“错误,不同架构动态库交叉编译的
    在学习modbus协议时,发现了一些关于libmodbus库编译的问题 我将虚拟机作为客户端,树莓派作为服务器端,分别编写modbus-tcp协议的客户端/服务器端代码在ubuntu虚拟机上可以成功编译,但是在树莓派上会报:”filenotrecognized:fileformatnotrecognized“错误 下面是关于”fil......
  • Studio 3T 2023.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,现在
    TheprofessionalGUI,IDEandclientforMongoDB请访问原文链接:https://sysin.org/blog/studio-3t-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgStudio3T,MongoDB的专业GUI、IDE和客户端适用于MongoDB的所有IDE、客户端和GUI工具——在Atlas......