Golang记录、计算函数执行耗时、运行时间的一个简单方法

 更新时间:2015年07月04日 10:33:12   投稿:junjie  
这篇文章主要介绍了Golang记录、计算函数执行耗时、运行时间的一个简单方法,本文直接给出代码实例,需要的朋友可以参考下

先写一个公共函数, 比如在 common 包下有这么一个方法:

// 写超时警告日志 通用方法

func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) {
  dis := time.Now().Sub(start).Seconds()
  if dis > timeLimit {
    log.Warning(log.CENTER_COMMON_WARNING, tag, " detailed:", detailed, "TimeoutWarning using", dis, "s")
    //pubstr := fmt.Sprintf("%s count %v, using %f seconds", tag, count, dis)
    //stats.Publish(tag, pubstr)
  }
}


这个函数的几个参数说明如下:
tag、detailed 表示超时发生位置的两个字符串参数。
start 程序开始执行的时间
timeLimit  函数执行超时阀值,单位是秒。
使用时,在每个函数的第一行有下面一段代码就行了:

//

func Save函数名(…) (…) {
  // 如果这个方法执行超时3秒,则会记录日志
  defer common.TimeoutWarning("SaveAppLogMain", "Total", time.Now(), float64(3))
  // … 函数自身的逻辑。
}

相关文章

  • go语言通过反射获取和设置结构体字段值的方法

    go语言通过反射获取和设置结构体字段值的方法

    这篇文章主要介绍了go语言通过反射获取和设置结构体字段值的方法,实例分析了Go语言反射的使用技巧,需要的朋友可以参考下
    2015-03-03
  • GoLang中的互斥锁Mutex和读写锁RWMutex使用教程

    GoLang中的互斥锁Mutex和读写锁RWMutex使用教程

    RWMutex是一个读/写互斥锁,在某一时刻只能由任意数量的reader持有或者一个writer持有。也就是说,要么放行任意数量的reader,多个reader可以并行读;要么放行一个writer,多个writer需要串行写
    2023-01-01
  • golang中之strconv包的具体使用方法

    golang中之strconv包的具体使用方法

    这篇文章主要介绍了golang中之strconv包的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Go中的Timer 和 Ticker详解

    Go中的Timer 和 Ticker详解

    在日常开发中,我们可能会遇到需要延迟执行或周期性地执行一些任务,这个时候就需要用到 Go 语言中的定时器,本文将会对这两种定时器类型进行介绍,感兴趣的朋友一起看看吧
    2024-07-07
  • Go在GoLand中引用github.com中的第三方包具体步骤

    Go在GoLand中引用github.com中的第三方包具体步骤

    这篇文章主要给大家介绍了关于Go在GoLand中引用github.com中第三方包的具体步骤,文中通过图文介绍的非常详细,对大家学习或者使用Go具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • 详解Go语言中的内存对齐

    详解Go语言中的内存对齐

    前面我们学习了Go语言空结构体详解,最近又在看unsafe包的知识,在查阅相关资料时不免会看到内存对齐相关的内容。虽然不会,但可以学呀,那么这篇文章,我们就一起来看下什么是内存对齐吧
    2022-10-10
  • 使用go语言实现cors中间件

    使用go语言实现cors中间件

    CORS是一种浏览器安全机制,用于控制在Web应用程序中不同源(Origin)之间的资源共享,本文将给大家介绍如何使用go语言实现cors中间件,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-09-09
  • golang读取yaml配置文件的方法实现

    golang读取yaml配置文件的方法实现

    本文主要介绍了golang读取yaml配置文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Go实现整合Logrus实现日志打印

    Go实现整合Logrus实现日志打印

    这篇文章主要介绍了Go实现整合Logrus实现日志打印,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Golang动态数组的实现示例

    Golang动态数组的实现示例

    动态数组能自动调整大小,与静态数组不同,其大小不固定,可根据需求变化,实现通常依赖于数据结构如链表或数组加额外信息,本文就来介绍一下Golang动态数组的实现示例,感兴趣的可以了解一下
    2024-10-10

最新评论