diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-01-20 14:33:35 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-01-20 14:56:20 +0100 |
| commit | c4901df5c3ec697876b29d00009fe82386ffe183 (patch) | |
| tree | d6b65360baa2285bf416132a831f3ed3b904cc05 /prog/mutation.go | |
| parent | b218a25ecb74232b482689cb7165c1b6e981181d (diff) | |
prog: mutate programs more aggressively
Currently we stop mutating with 50% probability.
Stop mutating with 33% probability instead.
Benchmark shows both coverage increase and corpus reduction:
baseline oneof3 diff
coverage 65467 65604 137
corpus 35423 35354 -69
exec total 5474879 5023268 -451611
Diffstat (limited to 'prog/mutation.go')
| -rw-r--r-- | prog/mutation.go | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/prog/mutation.go b/prog/mutation.go index e8f8f47ac..32c63e0d2 100644 --- a/prog/mutation.go +++ b/prog/mutation.go @@ -24,7 +24,7 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro } else { // Mutate current prog without splicing. retry := false - for stop := false; !stop || retry; stop = r.bin() { + for stop := false; !stop || retry; stop = r.oneOf(3) { retry = false r.choose( 20, func() { @@ -54,7 +54,7 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro return } s := analyze(ct, p, c) - for stop := false; !stop; stop = r.bin() { + for stop := false; !stop; stop = r.oneOf(3) { args, bases := mutationArgs(c) if len(args) == 0 { retry = true |
