diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-03-20 15:07:42 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-03-20 14:50:51 +0000 |
| commit | 6753db5cdc04330ec9d1a5116b890c19481d69b3 (patch) | |
| tree | 040473e4831ebe962743fe9f88fc0b3b2c218f4d /prog/clone.go | |
| parent | 5b7d42ae0076f983317dceae96a942ea9d07c29c (diff) | |
prog: optimize resourceCentric()
In practice, we need to try out many different corpus programs before we
may find a matching resource. It's very inefficient to Clone() each of
them.
This change gives a +76% speed improvement in the BenchmarkMutate()
test.
Diffstat (limited to 'prog/clone.go')
| -rw-r--r-- | prog/clone.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/prog/clone.go b/prog/clone.go index 4523be0eb..6ec28e39e 100644 --- a/prog/clone.go +++ b/prog/clone.go @@ -8,7 +8,10 @@ import ( ) func (p *Prog) Clone() *Prog { - newargs := make(map[*ResultArg]*ResultArg) + return p.cloneWithMap(make(map[*ResultArg]*ResultArg)) +} + +func (p *Prog) cloneWithMap(newargs map[*ResultArg]*ResultArg) *Prog { p1 := &Prog{ Target: p.Target, Calls: cloneCalls(p.Calls, newargs), |
