Go的时间包声称给出了纳秒精度. http://golang.org/src/pkg/time/time.go
我想知道它是如何实现的,如果我可以相信它.我的疑虑来自Python,它清楚地记录了它的困难和时间限制:
来自http://docs.python.org/2/library/time.html
各种实时函数的精度可能低于表示其值或参数的单位所建议的精度.例如,在大多数Unix系统上,时钟"滴答"仅为每秒50或100次.
另一方面,time()和sleep()的精度优于Unix等价:时间表示为浮点数,time()返回最准确的可用时间(使用Unix gettimeofday()),以及sleep()将接受非零分数的时间(Unix select()用于实现此功能,如果可用).
由于操作系统给python带来了如此艰难的时期,Go如何实现其纳秒精度?
生成随机布尔的最快方法是什么?
目前我正在这样做:
package main
import (
"fmt"
"math/rand"
"time"
)
// random generator
var src = rand.NewSource(time.Now().UnixNano())
var r = rand.New(src)
func main() {
for i := 0; i < 100; i++ {
// generate a random boolean and print it
fmt.Printf("bool: %s\n", r.Intn(2) != 0)
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何改善呢?