Reduce memory allocation events

Former-commit-id: fbdb2afc857b02adc2593e2278d3bd838e99b0b2
This commit is contained in:
Eric Coissac
2024-06-22 21:01:53 +02:00
parent 54a138196c
commit e6b87ecd02
19 changed files with 166 additions and 75 deletions

View File

@@ -12,6 +12,7 @@ package obiseq
import (
"crypto/md5"
"slices"
"sync"
"sync/atomic"
@@ -418,12 +419,15 @@ func (s *BioSequence) SetFeatures(feature []byte) {
s.feature = feature
}
// Setting the sequence of the BioSequence.
// SetSequence sets the sequence of the BioSequence.
//
// Parameters:
// - sequence: a byte slice representing the sequence to be set.
func (s *BioSequence) SetSequence(sequence []byte) {
if s.sequence != nil {
RecycleSlice(&s.sequence)
}
s.sequence = CopySlice(obiutils.InPlaceToLower(sequence))
s.sequence = obiutils.InPlaceToLower(CopySlice(sequence))
}
// Setting the qualities of the BioSequence.
@@ -507,3 +511,15 @@ func (s *BioSequence) Composition() map[byte]int {
return counts
}
func (s *BioSequence) Grow(length int) {
if s.sequence == nil {
s.sequence = GetSlice(length)
} else {
s.sequence = slices.Grow(s.sequence, length)
}
if s.qualities != nil {
s.qualities = slices.Grow(s.qualities, length)
}
}