2014-10-03 52 views
0

我发现这个代码库下面,有人这样评价我们的方法,象这样创建兰特结构

// TODO avoid using rand.Float64 method. it uses a singleton lock and may cause 
    // performance issues. Instead, instantiate a rand struct and use that to call 
    // Float64() 

    func standardStrategy(l *ledger) bool { 
     return rand.Float64() <= probabilitySend(l.Accounting.Value()) 
    } 

func probabilitySend(ratio float64) float64 { 
    x := 1 + math.Exp(6-3*ratio) 
    y := 1/x 
    return 1 - y 
} 

一个TODO这是什么意思?

回答

0

我认为这意味着这个:rand包有一些东西叫做Rand结构,它具有随机生成函数,可能不会锁定全局锁,因此可能是注释的作者意味着使用此结构。即:

r := rand.New(rand.NewSource(1234)) 

fmt.Println(r.Float64()) 

在此代码中使用的功能是全局的包,使用全球初始化Rand结构,内部globalRand调用,它有一个内部互斥。所以避免使用它可以节省这个锁定。