mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 04:08:01 -05:00
feat: better cli input for blob size maximizer
This commit is contained in:
@@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func nbConstraints(blobSize int) int {
|
||||
fmt.Printf("*********************\nfor blob of size %dB or %.2fKB:\n", blobSize, float32(blobSize)/1024)
|
||||
fmt.Printf("*********************\nfor blob of size %d B or %.2fKB:\n", blobSize, float32(blobSize)/1024)
|
||||
c := v1.Circuit{
|
||||
BlobBytes: make([]frontend.Variable, 32*4096),
|
||||
Dict: make([]frontend.Variable, 64*1024),
|
||||
@@ -41,40 +41,56 @@ var (
|
||||
flagCrawlStep = flag.Int("step", 1000, "the crawl step") // TODO @Tabaie fix mixed metaphor
|
||||
flagStart = flag.Int("start", blob.MaxUncompressedBytes, "initial size in bytes")
|
||||
flagTargetNbConstraints = flag.Int("target", 1<<27, "target number of constraints")
|
||||
flagBound1 = flag.Int("bound1", -1, "last size")
|
||||
flagBound2 = flag.Int("bound2", -1, "second to last size")
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
flag.Parse()
|
||||
v := nbConstraints(*flagStart)
|
||||
a, b := *flagStart, *flagStart
|
||||
|
||||
if v > *flagTargetNbConstraints {
|
||||
fmt.Println("crawling downward")
|
||||
for v > *flagTargetNbConstraints {
|
||||
b = a
|
||||
a = max(a-*flagCrawlStep, 0)
|
||||
v = nbConstraints(a)
|
||||
*flagCrawlStep *= 2
|
||||
var a, b int // lower and upper bounds
|
||||
|
||||
// if given bounds, start the binary search
|
||||
if *flagBound1 != -1 && *flagBound2 != -1 {
|
||||
a, b = *flagBound1, *flagBound2
|
||||
if a > b {
|
||||
a, b = b, a
|
||||
}
|
||||
} else if v < *flagTargetNbConstraints {
|
||||
fmt.Println("crawling upward")
|
||||
for v < *flagTargetNbConstraints {
|
||||
a = b
|
||||
b += *flagCrawlStep
|
||||
v = nbConstraints(b)
|
||||
*flagCrawlStep *= 2
|
||||
fmt.Print("bounds given.")
|
||||
} else { // only one value given, start crawling
|
||||
v := nbConstraints(*flagStart)
|
||||
a, b = *flagStart, *flagStart
|
||||
|
||||
if v > *flagTargetNbConstraints {
|
||||
fmt.Println("crawling downward")
|
||||
for v > *flagTargetNbConstraints {
|
||||
b = a
|
||||
a = max(a-*flagCrawlStep, 0)
|
||||
v = nbConstraints(a)
|
||||
*flagCrawlStep *= 2
|
||||
}
|
||||
} else if v < *flagTargetNbConstraints {
|
||||
fmt.Println("crawling upward")
|
||||
for v < *flagTargetNbConstraints {
|
||||
a = b
|
||||
b += *flagCrawlStep
|
||||
v = nbConstraints(b)
|
||||
*flagCrawlStep *= 2
|
||||
}
|
||||
}
|
||||
if v == *flagTargetNbConstraints {
|
||||
fmt.Println("wow what are the odds")
|
||||
return
|
||||
}
|
||||
fmt.Print("bounds found.")
|
||||
}
|
||||
if v == *flagTargetNbConstraints {
|
||||
fmt.Println("wow what are the odds")
|
||||
return
|
||||
}
|
||||
fmt.Println("bounds found. binary searching")
|
||||
|
||||
fmt.Println(" binary searching")
|
||||
|
||||
for b > a {
|
||||
m := (b + a) / 2
|
||||
v = nbConstraints(m)
|
||||
v := nbConstraints(m)
|
||||
if v > *flagTargetNbConstraints {
|
||||
b = m
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user