关于查询程序执行时间消耗问题

guichun68 · 2018-12-18 21:56:33 · 976 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-12-18 21:56:33 的主题,其中的信息可能已经有所发展或是发生改变。

写了一个线性二分查找的算法,想打印出执行的时间,时间明明在7秒以上,可却打印出2.xxms 或者 7.xxms ,总之,打印出来的数字都不到一秒。奇怪,代码如下,望大神指点:

func makeRange(min, max int) []int {
    a := make([]int, max-min+1)
    for i := range a {
        a[i] = min + i
    }
    return a
}
func main() {
    array := makeRange(0, 1000000000)
    LinearySearcheT(array)
}
func LinearySearcheT(array []int) {
    defer timeCost("线性查找 ", time.Now())
    bool := LinearSearch(array, 1000000)
    fmt.Print("b1:", bool)
}
func timeCost(desc string, start time.Time) {
    terminal := time.Since(start)
    fmt.Printf("%v耗时:%v\n", desc, terminal)
}
func LinearSearch(array []int, t int) bool {
    i := 0
    for i < len(array) {
        if array[i] == t {
            return true
        }
        i++
    }
    return false
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

976 次点击  
加入收藏 微博
5 回复  |  直到 2019-02-28 13:50:27
victorl
victorl · #1 · 6年之前

没有问题的,你的代码大部分时间花在array := makeRange(0, 1000000000)这个上面,你按下面试试

func main() {
    t := time.Now()
    array := makeRange(0, 1000000000)
    LinearySearcheT(array, t)
}

// LinearySearcheT --
func LinearySearcheT(array []int, t time.Time) {
    defer timeCost("线性查找 ", t)
    bool := LinearSearch(array, 1000000)
    fmt.Print("b1:", bool)
}
BlackBerryX
BlackBerryX · #2 · 6年之前
victorlvictorl #1 回复

没有问题的,你的代码大部分时间花在array := makeRange(0, 1000000000)这个上面,你按下面试试 ```go func main() { t := time.Now() array := makeRange(0, 1000000000) LinearySearcheT(array, t) } // LinearySearcheT -- func LinearySearcheT(array []int, t time.Time) { defer timeCost("线性查找 ", t) bool := LinearSearch(array, 1000000) fmt.Print("b1:", bool) } ```

请问一下,回复要如何添加代码段?

guichun68
guichun68 · #3 · 6年之前
victorlvictorl #1 回复

没有问题的,你的代码大部分时间花在array := makeRange(0, 1000000000)这个上面,你按下面试试 ```go func main() { t := time.Now() array := makeRange(0, 1000000000) LinearySearcheT(array, t) } // LinearySearcheT -- func LinearySearcheT(array []int, t time.Time) { defer timeCost("线性查找 ", t) bool := LinearSearch(array, 1000000) fmt.Print("b1:", bool) } ```

多谢指点!

guichun68
guichun68 · #4 · 6年之前

2楼 @BlackBerryX 帖子和回复区都是支持Mardown格式的文本的,把代码放到一对3个重音符号```之间, 头部标识语言类型,就会有代码高亮效果了。如下:

glang.png

显示效果:

func main(){
    fmt.Println("hello")
}
BlackBerryX
BlackBerryX · #5 · 6年之前
guichun68guichun68 #4 回复

2楼 @BlackBerryX 帖子和回复区都是支持Mardown格式的文本的,把代码放到一对3个重音符号```之间, 头部标识语言类型,就会有代码高亮效果了。如下: ![glang.png](https://static.studygolang.com/190227/389106c41c54c96a648f27e220eb8025.png) 显示效果: ```golang func main(){ fmt.Println("hello") } ```

感谢~!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传