本文整理汇总了Golang中ddtxn.Query类的典型用法代码示例。如果您正苦于以下问题:Golang Query类的具体用法?Golang Query怎么用?Golang Query使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Query类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: MakeOne
// Calls rand 4 times
func (b *Big) MakeOne(w int, local_seed *uint32, txn *ddtxn.Query) {
rnd := uint64(ddtxn.RandN(local_seed, uint32(b.ni)))
txn.U1 = rnd
txn.U2 = (rnd * 2) % b.ni
txn.U3 = (rnd * 3) % b.ni
txn.U4 = (rnd * 4) % b.ni
txn.U5 = (rnd * 5) % b.ni
txn.U6 = (rnd * 6) % b.ni
txn.U7 = (rnd) % uint64(b.np)
if *incr {
txn.TXN = ddtxn.BIG_INCR
} else {
txn.TXN = ddtxn.BIG_RW
}
}
开发者ID:ngaut,项目名称:ddtxn,代码行数:16,代码来源:big.go
示例2: MakeBid
func (b *Rubis) MakeBid(w int, local_seed *uint32, txn *ddtxn.Query) {
txn.TXN = ddtxn.RUBIS_BID
bidder := b.users[0]
var x uint32
if b.zipfd > 0 {
x = uint32(b.zip[w].Uint64())
} else {
x = ddtxn.RandN(local_seed, uint32(b.nproducts))
}
if x >= uint32(len(b.products)) {
log.Fatalf("Huh %v %v %v\n", x, len(b.products), b.nproducts)
}
product := b.products[x]
txn.U1 = uint64(bidder)
if product == 0 {
log.Fatalf("store bid ID 0? %v %v", x, b.products[x])
}
txn.U2 = uint64(product)
txn.U3 = uint64(time.Now().UnixNano())
}
开发者ID:ngaut,项目名称:ddtxn,代码行数:20,代码来源:rubis.go
示例3: MakeOne
// Calls rand 4 times
func (b *Buy) MakeOne(w int, local_seed *uint32, sp uint32, txn *ddtxn.Query) {
var bidder int
var product int
if *partition {
rnd := ddtxn.RandN(local_seed, sp/8)
lb := int(rnd)
bidder = lb + w*int(sp)
} else {
bidder = int(ddtxn.RandN(local_seed, uint32(b.nbidders)))
}
x := int(ddtxn.RandN(local_seed, 100))
if b.zipfd > 0 {
product = int(b.z[w].Uint64())
} else {
product = int(ddtxn.RandN(local_seed, uint32(b.nproducts)))
}
if x < b.read_rate {
if x > b.ncontended_rate {
// Contended read; use Zipfian distribution or np
txn.K1 = ddtxn.UserKey(uint64(bidder))
txn.K2 = ddtxn.ProductKey(product)
} else {
// (Hopefully) uncontended read. Random product.
product = int(ddtxn.RandN(local_seed, uint32(b.nbidders)))
txn.K1 = ddtxn.UserKey(uint64(bidder))
txn.K2 = ddtxn.ProductKey(product)
}
txn.TXN = ddtxn.D_READ_TWO
} else {
amt := int32(ddtxn.RandN(local_seed, 10))
txn.K1 = ddtxn.UserKey(uint64(bidder))
txn.K2 = ddtxn.ProductKey(product)
txn.A = amt
txn.TXN = ddtxn.D_BUY
}
}
开发者ID:ngaut,项目名称:ddtxn,代码行数:37,代码来源:buy.go
示例4: MakeOne
func (b *Rubis) MakeOne(w int, local_seed *uint32, txn *ddtxn.Query) {
x := float64(ddtxn.RandN(local_seed, 100))
if x < b.rates[0] {
txn.TXN = ddtxn.RUBIS_BID
//bidder := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
bidder := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
//product := b.products[ddtxn.RandN(local_seed, uint32(b.nproducts))]
var x uint32
if b.zipfd > 0 {
x = uint32(b.zip[w].Uint64())
} else {
x = ddtxn.RandN(local_seed, uint32(b.nproducts))
}
product := b.products[x]
txn.U1 = uint64(bidder)
if product == 0 {
log.Fatalf("store bid ID 0? %v %v", x, b.products[x])
}
txn.U2 = uint64(product)
//txn.U3 = uint64(ddtxn.RandN(local_seed, 10))
txn.U3 = uint64(time.Now().UnixNano()) & 0x000efff
} else if x < b.rates[1] {
txn.TXN = ddtxn.RUBIS_VIEWBIDHIST
x := ddtxn.RandN(local_seed, uint32(b.nproducts))
product := b.products[x]
if product == 0 {
log.Fatalf("view bid hist ID 0? %v %v", x, b.products[x])
}
txn.U1 = uint64(product)
} else if x < b.rates[2] {
txn.TXN = ddtxn.RUBIS_BUYNOW
//bidder := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
bidder := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
x := ddtxn.RandN(local_seed, uint32(b.nproducts))
product := b.products[x]
if product == 0 {
log.Fatalf("buy now ID 0? %v %v", x, b.products[x])
}
txn.U1 = uint64(bidder)
txn.U2 = uint64(product)
txn.A = int32(ddtxn.RandN(local_seed, 10))
} else if x < b.rates[3] {
txn.TXN = ddtxn.RUBIS_COMMENT
// u1 := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
u1 := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
// u2 := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
u2 := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
x := ddtxn.RandN(local_seed, uint32(b.nproducts))
product := b.products[x]
if product == 0 {
log.Fatalf("comment ID 0? %v %v", x, b.products[x])
}
txn.U1 = uint64(u1)
txn.U2 = uint64(u2)
txn.U3 = uint64(product)
txn.S1 = "xxxx"
txn.U4 = 1
} else if x < b.rates[4] {
txn.TXN = ddtxn.RUBIS_NEWITEM
// bidder := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
bidder := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
amt := uint64(ddtxn.RandN(local_seed, 10))
txn.U1 = uint64(bidder)
txn.S1 = "yyyy"
txn.S2 = "zzzz"
txn.U2 = amt
txn.U3 = amt
txn.U4 = amt
txn.U5 = 1
txn.U6 = 1
txn.U7 = uint64(ddtxn.RandN(local_seed, uint32(ddtxn.NUM_CATEGORIES)))
} else if x < b.rates[5] {
txn.TXN = ddtxn.RUBIS_PUTBID
x := ddtxn.RandN(local_seed, uint32(b.nproducts))
product := b.products[x]
if product == 0 {
log.Fatalf("put bid ID 0? %v %v", x, b.products[x])
}
txn.U1 = uint64(product)
} else if x < b.rates[6] {
txn.TXN = ddtxn.RUBIS_PUTCOMMENT
x := ddtxn.RandN(local_seed, uint32(b.nproducts))
product := b.products[x]
if product == 0 {
log.Fatalf("put comment ID 0? %v %v", x, b.products[x])
}
// bidder := b.users[int(ddtxn.RandN(local_seed, b.sp))+w*int(b.sp)]
bidder := b.users[int(ddtxn.RandN(local_seed, uint32(b.nbidders)))]
txn.U1 = uint64(bidder)
txn.U2 = uint64(product)
} else if x < b.rates[7] {
txn.TXN = ddtxn.RUBIS_REGISTER
txn.U1 = uint64(ddtxn.RandN(local_seed, uint32(ddtxn.NUM_REGIONS)))
txn.U2 = uint64(ddtxn.RandN(local_seed, 1000000000))
} else if x < b.rates[8] {
txn.TXN = ddtxn.RUBIS_SEARCHCAT
txn.U1 = uint64(ddtxn.RandN(local_seed, uint32(ddtxn.NUM_CATEGORIES)))
txn.U2 = 5
} else if x < b.rates[9] {
txn.TXN = ddtxn.RUBIS_SEARCHREG
//.........这里部分代码省略.........
开发者ID:ngaut,项目名称:ddtxn,代码行数:101,代码来源:rubis.go
示例5: main
func main() {
flag.Parse()
runtime.GOMAXPROCS(*nprocs)
if *clientGoRoutines == 0 {
*clientGoRoutines = *nprocs
}
if *nworkers == 0 {
*nworkers = *nprocs
}
if *prob == -1 && *ZipfDist < 0 {
log.Fatalf("Zipf distribution must be positive")
}
if *ZipfDist >= 0 && *prob > -1 {
log.Fatalf("Set contention to -1 to use Zipf distribution of keys")
}
s := ddtxn.NewStore()
sp := uint32(*nbidders / *nworkers)
for i := 0; i < *nbidders; i++ {
k := ddtxn.ProductKey(i)
s.CreateKey(k, int32(0), ddtxn.SUM)
}
dlog.Printf("Done with Populate")
coord := ddtxn.NewCoordinator(*nworkers, s)
if *ddtxn.CountKeys {
for i := 0; i < *nworkers; i++ {
w := coord.Workers[i]
w.NKeyAccesses = make([]int64, *nbidders)
}
}
dlog.Printf("Done initializing single\n")
p := prof.StartProfile()
start := time.Now()
var wg sync.WaitGroup
pkey := int(sp - 1)
dlog.Printf("Partition size: %v; Contended key %v\n", sp/2, pkey)
gave_up := make([]int64, *clientGoRoutines)
goZipf := make([]*ddtxn.Zipf, *clientGoRoutines)
if *prob == -1 && *ZipfDist >= 0 {
for i := 0; i < *clientGoRoutines; i++ {
rnd := rand.New(rand.NewSource(int64(i * 12467)))
goZipf[i] = ddtxn.NewZipf(rnd, *ZipfDist, 1, uint64(*nbidders)-1)
if goZipf[i] == nil {
panic("nil zipf")
}
}
}
for i := 0; i < *clientGoRoutines; i++ {
wg.Add(1)
go func(n int) {
exp := ddtxn.MakeExp(50)
retries := make(ddtxn.RetryHeap, 0)
heap.Init(&retries)
var local_seed uint32 = uint32(rand.Intn(10000000))
wi := n % (*nworkers)
w := coord.Workers[wi]
top := (wi + 1) * int(sp)
bottom := wi * int(sp)
dlog.Printf("%v: Noncontended section: %v to %v\n", n, bottom, top)
end_time := time.Now().Add(time.Duration(*nsec) * time.Second)
for {
tm := time.Now()
if !end_time.After(tm) {
break
}
var t ddtxn.Query
if len(retries) > 0 && retries[0].TS.Before(tm) {
t = heap.Pop(&retries).(ddtxn.Query)
} else {
x := float64(ddtxn.RandN(&local_seed, 100))
if *prob == -1 {
x := goZipf[n].Uint64()
if x >= uint64(*nbidders) || x < 0 {
log.Fatalf("x not in bounds: %v\n", x)
}
t.K1 = ddtxn.ProductKey(int(x))
} else if x < *prob {
// contended txn
t.K1 = ddtxn.ProductKey(pkey)
} else {
// uncontended
k := pkey
for k == pkey {
if *partition {
rnd := ddtxn.RandN(&local_seed, sp-1)
lb := int(rnd)
k = lb + wi*int(sp) + 1
if k < bottom || k >= top+1 {
log.Fatalf("%v: outside my range %v [%v-%v]\n", n, k, bottom, top)
}
} else {
k = int(ddtxn.RandN(&local_seed, uint32(*nbidders)))
}
}
//.........这里部分代码省略.........
开发者ID:ngaut,项目名称:ddtxn,代码行数:101,代码来源:single.go
示例6: main
//.........这里部分代码省略.........
for i := 0; i < *nworkers; i++ {
wg.Add(1)
go func(i int) {
coord.Workers[i].PreallocateRubis(0, int(bids_per_worker), ddtxn.NUM_ITEMS)
wg.Done()
}(i)
}
wg.Wait()
}
*ddtxn.UseRLocks = tmp
fmt.Printf("Allocation took %v\n", time.Since(prealloc))
}
fmt.Printf("Done initializing rubis\n")
p := prof.StartProfile()
start := time.Now()
gave_up := make([]int64, *clientGoRoutines)
var wg sync.WaitGroup
for i := 0; i < *clientGoRoutines; i++ {
exp := ddtxn.MakeExp(30)
wg.Add(1)
go func(n int) {
retries := make(ddtxn.RetryHeap, 0)
heap.Init(&retries)
end_time := time.Now().Add(time.Duration(*nsec) * time.Second)
var local_seed uint32 = uint32(rand.Intn(1000000))
wi := n % (*nworkers)
w := coord.Workers[wi]
for {
tm := time.Now()
if !end_time.After(tm) {
break
}
var t ddtxn.Query
if len(retries) > 0 && retries[0].TS.Before(tm) {
t = heap.Pop(&retries).(ddtxn.Query)
} else {
rubis.MakeBid(w.ID, &local_seed, &t)
if *ddtxn.Latency {
t.S = time.Now()
}
}
if *doValidate {
t.W = make(chan struct {
R *ddtxn.Result
E error
})
}
committed := false
_, err := w.One(t)
if err == ddtxn.ESTASH {
if *doValidate {
x := <-t.W
err = x.E
}
committed = true
} else if err == ddtxn.EABORT {
committed = false
} else {
committed = true
}
t.I++
if !committed {
t.TS = tm.Add(time.Duration(ddtxn.RandN(&local_seed, exp.Exp(t.I))) * time.Microsecond)
if t.TS.Before(end_time) {
heap.Push(&retries, t)
开发者ID:ngaut,项目名称:ddtxn,代码行数:67,代码来源:bid.go
示例7: main
func main() {
flag.Parse()
runtime.GOMAXPROCS(*nprocs)
if *clientGoRoutines == 0 {
*clientGoRoutines = *nprocs
}
if *nworkers == 0 {
*nworkers = *nprocs
}
nproducts := *nbidders / *contention
if *doValidate {
if !*ddtxn.Allocate {
log.Fatalf("Cannot correctly validate without waiting for results; add -allocate\n")
}
}
s := ddtxn.NewStore()
coord := ddtxn.NewCoordinator(*nworkers, s)
if *ddtxn.CountKeys {
for i := 0; i < *nworkers; i++ {
w := coord.Workers[i]
w.NKeyAccesses = make([]int64, *nbidders)
}
}
big_app := &apps.Big{}
big_app.Init(*nbidders, nproducts, *nworkers, *readrate, *clientGoRoutines, *notcontended_readrate)
big_app.Populate(s, coord.Workers[0].E)
dlog.Printf("Done initializing buy\n")
p := prof.StartProfile()
start := time.Now()
var wg sync.WaitGroup
for i := 0; i < *clientGoRoutines; i++ {
wg.Add(1)
go func(n int) {
duration := time.Now().Add(time.Duration(*nsec) * time.Second)
var local_seed uint32 = uint32(rand.Intn(10000000))
wi := n % (*nworkers)
w := coord.Workers[wi]
// It's ok to reuse t because it gets copied in
// w.One(), and if we're actually reading from t later
// we pause and don't re-write it until it's done.
var t ddtxn.Query
for duration.After(time.Now()) {
big_app.MakeOne(w.ID, &local_seed, &t)
if *apps.Latency || *doValidate {
t.W = make(chan struct {
R *ddtxn.Result
E error
})
txn_start := time.Now()
_, err := w.One(t)
if err == ddtxn.ESTASH {
x := <-t.W
err = x.E
}
txn_end := time.Since(txn_start)
if *apps.Latency {
big_app.Time(&t, txn_end, n)
}
if *doValidate {
if err == nil {
big_app.Add(t)
}
}
} else {
w.One(t)
}
}
wg.Done()
}(i)
}
wg.Wait()
coord.Finish()
end := time.Since(start)
p.Stop()
stats := make([]int64, ddtxn.LAST_STAT)
nitr, nwait, nwait2 := ddtxn.CollectCounts(coord, stats)
if *doValidate {
big_app.Validate(s, int(nitr))
}
out := fmt.Sprintf(" sys: %v, contention: %v, nworkers: %v, rr: %v, ncrr: %v, nusers: %v, done: %v, actual time: %v, epoch changes: %v, total/sec: %v, throughput ns/txn: %v, naborts: %v, nwmoved: %v, nrmoved: %v, ietime: %v, ietime1: %v, etime: %v, etime2: %v, nstashed: %v, rlock: %v, wrratio: %v, nsamples: %v ", *ddtxn.SysType, *contention, *nworkers, *readrate, *notcontended_readrate*float64(*readrate), *nbidders, nitr, end, ddtxn.NextEpoch, float64(nitr)/end.Seconds(), end.Nanoseconds()/nitr, stats[ddtxn.NABORTS], ddtxn.WMoved, ddtxn.RMoved, ddtxn.Time_in_IE.Seconds(), ddtxn.Time_in_IE1.Seconds(), nwait.Seconds()/float64(*nworkers), nwait2.Seconds()/float64(*nworkers), stats[ddtxn.NSTASHED], *ddtxn.UseRLocks, *ddtxn.WRRatio, stats[ddtxn.NSAMPLES])
fmt.Printf(out)
fmt.Printf("\n")
f, err := os.OpenFile(*dataFile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
if err != nil {
panic(err)
}
defer f.Close()
ddtxn.PrintStats(out, stats, f, coord, s, *nbidders)
//.........这里部分代码省略.........
开发者ID:ngaut,项目名称:ddtxn,代码行数:101,代码来源:big.go
示例8: main
func main() {
flag.Parse()
runtime.GOMAXPROCS(*nprocs)
if *clientGoRoutines == 0 {
*clientGoRoutines = *nprocs
}
if *nworkers == 0 {
*nworkers = *nprocs
}
if *doValidate {
if !*ddtxn.Allocate {
log.Fatalf("Cannot correctly validate without waiting for results; add -allocate\n")
}
}
if *contention == -1.0 && *ZipfDist == -1.0 {
log.Fatalf("Should use zipf or contention")
}
var nproducts int
if *contention > 0 {
nproducts = *nbidders / int(*contention)
} else {
nproducts = *nbidders
}
s := ddtxn.NewStore()
buy_app := &apps.Buy{}
buy_app.Init(nproducts, *nbidders, *nworkers, *readrate, *clientGoRoutines, *notcontended_readrate, *ZipfDist)
dlog.Printf("Starting to initialize buy\n")
buy_app.Populate(s, nil)
coord := ddtxn.NewCoordinator(*nworkers, s)
if *ddtxn.CountKeys {
for i := 0; i < *nworkers; i++ {
w := coord.Workers[i]
w.NKeyAccesses = make([]int64, *nbidders)
}
}
dlog.Printf("Done initializing buy\n")
p := prof.StartProfile()
start := time.Now()
var wg sync.WaitGroup
gave_upr := make([]int64, *clientGoRoutines)
gave_upw := make([]int64, *clientGoRoutines)
var ending_retries int64
for i := 0; i < *clientGoRoutines; i++ {
wg.Add(1)
go func(n int) {
exp := ddtxn.MakeExp(50)
retries := make(ddtxn.RetryHeap, 0)
heap.Init(&retries)
end_time := time.Now().Add(time.Duration(*nsec) * time.Second)
var local_seed uint32 = uint32(rand.Intn(10000000))
var sp uint32 = uint32(*nbidders / *clientGoRoutines)
w := coord.Workers[n%(*nworkers)]
var tm time.Time
for {
tm = time.Now()
if !end_time.After(tm) {
break
}
var t ddtxn.Query
if len(retries) > 0 && retries[0].TS.Before(tm) {
t = heap.Pop(&retries).(ddtxn.Query)
} else {
buy_app.MakeOne(w.ID, &local_seed, sp, &t)
if *ddtxn.Latency {
t.S = time.Now()
}
}
if *doValidate {
t.W = make(chan struct {
R *ddtxn.Result
E error
}, 1)
}
committed := false
_, err := w.One(t)
if err == ddtxn.ESTASH {
if *doValidate {
x := <-t.W
err = x.E
if err == ddtxn.EABORT {
log.Fatalf("Should be run until commitment!\n")
}
}
committed = true // The worker stash code will retry
} else if err == ddtxn.EABORT {
committed = false
} else {
committed = true
}
t.I++
if !committed {
e := uint32(exp.Exp(t.I))
if e < 1 {
//.........这里部分代码省略.........
开发者ID:ngaut,项目名称:ddtxn,代码行数:101,代码来源:buy.go
注:本文中的ddtxn.Query类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论