Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 5943b45

Browse files
committed
plumbing: format/idxfile, avoid looking up the fanout mapping in the iterator twice
Signed-off-by: Filip Navara <[email protected]>
1 parent 1f19576 commit 5943b45

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

plumbing/format/idxfile/idxfile.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,10 @@ func (idx *MemoryIndex) genOffsetHash() error {
207207
var hash plumbing.Hash
208208
i := uint32(0)
209209
for firstLevel, fanoutValue := range idx.Fanout {
210-
pos := idx.FanoutMapping[firstLevel]
210+
mappedFirstLevel := idx.FanoutMapping[firstLevel]
211211
for secondLevel := uint32(0); i < fanoutValue; i++ {
212-
copy(hash[:], idx.Names[pos][secondLevel*objectIDLength:])
213-
offset := int64(idx.getOffset(pos, int(secondLevel)))
212+
copy(hash[:], idx.Names[mappedFirstLevel][secondLevel*objectIDLength:])
213+
offset := int64(idx.getOffset(mappedFirstLevel, int(secondLevel)))
214214
idx.offsetHash[offset] = hash
215215
secondLevel++
216216
}
@@ -285,14 +285,11 @@ func (i *idxfileEntryIter) Next() (*Entry, error) {
285285
continue
286286
}
287287

288+
mappedFirstLevel := i.idx.FanoutMapping[i.firstLevel]
288289
entry := new(Entry)
289-
ofs := i.secondLevel * objectIDLength
290-
copy(entry.Hash[:], i.idx.Names[i.idx.FanoutMapping[i.firstLevel]][ofs:])
291-
292-
pos := i.idx.FanoutMapping[entry.Hash[0]]
293-
294-
entry.Offset = i.idx.getOffset(pos, i.secondLevel)
295-
entry.CRC32 = i.idx.getCRC32(pos, i.secondLevel)
290+
copy(entry.Hash[:], i.idx.Names[mappedFirstLevel][i.secondLevel*objectIDLength:])
291+
entry.Offset = i.idx.getOffset(mappedFirstLevel, i.secondLevel)
292+
entry.CRC32 = i.idx.getCRC32(mappedFirstLevel, i.secondLevel)
296293

297294
i.secondLevel++
298295
i.total++

0 commit comments

Comments
 (0)