小编Jsm*_*ith的帖子

为什么我在golang的Date函数中得到错误的答案

在以下代码中,

  • t1是1970/1/1之后62天的时间(yy/mm/dd)
  • t2是1970/1/1之后63天的时间(yy/mm/dd)

package main

import (
    "fmt"
    "time"
)

func main() {

    t1 := time.Date(0, 0, 62, 0, 0, 0, 0, time.UTC).AddDate(1970, 1, 1)
    t2 := time.Date(0, 0, 63, 0, 0, 0, 0, time.UTC).AddDate(1970, 1, 1)

    fmt.Println("Time1:  ", t1)
    fmt.Println("Time2:  ", t2)
}
Run Code Online (Sandbox Code Playgroud)

如果t1是:

Time1: 1970-03-04 00:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)

我希望t2是:

Time2: 1970-03-05 00:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)

但输出是:

Time2: 1970-03-02 00:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

go

12
推荐指数
1
解决办法
528
查看次数

golang测试中的cpuprofile和memprofile

我在GO测试文件上尝试了命令go test -cpuprofile cpu.out,它产生了一个文件cpu.out,其中包含许多64位数字.这对我没有任何意义.该命令做了什么以及从cpu.out文件中提取了哪些信息?

同样go test -memprofile mem.out生成了一个mem.out文件,这对我来说似乎没什么意义.帮帮我.

我已经附上了这两个文件.

cpu.outmem.out

testing go memprof

4
推荐指数
1
解决办法
2875
查看次数

_mm_prefetch如何工作?

这里所述的_mm_prefetch调用将内容从RAM中的给定存储器位置预取到高速缓存行.但是缓存完全在硬件控制之下吗?基于经常访问的存储器(基于空间/时间位置),硬件将内容从存储器预取到高速缓存.我认为程序员无法控制缓存,它完全是一种硬件机制.

所以我的理解是错误的,缓存实际上可以由我们控制,对吧?

如果_mm_prefetch可以控制什么可以放在缓存中,

  1. 这是否意味着它永远不会从缓存中删除?

  2. 什么是等效的汇编级指令,它适用于缓存机制?

assembly caching sse prefetch visual-studio-2010

4
推荐指数
1
解决办法
1765
查看次数

代码和性能的顺序

我想找到哪个更快:struct vs array.所以我编写了一个GO代码,在其中我将4个int值(1,2,3和4)写入结构的成员,然后写入长度为4的数组.我试图找到写入所需的时间.

案例1:首先,我将值写入结构,然后写入数组.在这里,我发现数组比结构更快.

package main

import (
    "fmt"
    "time"
)

type abc struct {
    a, b, c, d int
}

func main() {

    var obj abc

    t1 := time.Now()
    obj.a = 1
    obj.b = 2
    obj.c = 3
    obj.d = 4
    t2 := time.Since(t1)

    fmt.Println("Struct access time: : ", t2)

    a := make([]int, 4)
    t3 := time.Now()
    a[0] = 1
    a[1] = 2
    a[2] = 3
    a[3] = 4
    t4 := time.Since(t3)

    fmt.Println("Array access time: : ", t4)

} …
Run Code Online (Sandbox Code Playgroud)

performance benchmarking struct go slice

2
推荐指数
1
解决办法
409
查看次数

Postgres 中可以存储的最大日期

我想在数据库中存储像“247530526765-12-27”这样的日期。但我收到以下错误IO 错误 pq:日期/时间字段值超出范围:“247530526765-12-27”

我知道我日期的年份字段太奇怪了。但我仍然想知道这是否可能。如果是,我如何增加 DATE 的最大范围。

postgresql

1
推荐指数
1
解决办法
3876
查看次数

在golang中将一个指针转换为另一个类型

我想将float64数转换为int64数.也就是说,我想读取float64寄存器的二进制内容,就好像它是int64值一样.我的意思是,我想要等同于以下C代码

long y;
float x = 1.2;
y  = * ( long * ) &x;
Run Code Online (Sandbox Code Playgroud)

我怎么做?

这是我的尝试不起作用.

package main

import (
    "fmt"
)

func main() {

    x := float64(1.2)
    y := *((*int64)(&x))

    fmt.Println("Ans:  ", y)

}
Run Code Online (Sandbox Code Playgroud)

pointers go

1
推荐指数
1
解决办法
1915
查看次数