mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
use NeedleValue directly instead of additional pointer, to reduce memory
usage
This commit is contained in:
parent
5cb38f9ea7
commit
98022f2b3d
|
@ -13,13 +13,13 @@ type NeedleValue struct {
|
|||
|
||||
type NeedleMap struct {
|
||||
indexFile *os.File
|
||||
m map[uint64]*NeedleValue //mapping needle key(uint64) to NeedleValue
|
||||
m map[uint64]NeedleValue //mapping needle key(uint64) to NeedleValue
|
||||
bytes []byte
|
||||
}
|
||||
|
||||
func NewNeedleMap(file *os.File) *NeedleMap {
|
||||
nm := &NeedleMap{
|
||||
m: make(map[uint64]*NeedleValue),
|
||||
m: make(map[uint64]NeedleValue),
|
||||
bytes: make([]byte, 16),
|
||||
indexFile: file,
|
||||
}
|
||||
|
@ -44,25 +44,25 @@ func LoadNeedleMap(file *os.File) *NeedleMap {
|
|||
offset := util.BytesToUint32(bytes[i+8 : i+12])
|
||||
size := util.BytesToUint32(bytes[i+12 : i+16])
|
||||
if offset>0 {
|
||||
nm.m[key] = &NeedleValue{util.Offset: offset, Size: size}
|
||||
nm.m[key] = NeedleValue{util.Offset: offset, Size: size}
|
||||
}else{
|
||||
delete(nm.m, key)
|
||||
}
|
||||
}
|
||||
|
||||
count, e = nm.indexFile.Read(bytes)
|
||||
}
|
||||
}
|
||||
return nm
|
||||
}
|
||||
|
||||
func (nm *NeedleMap) Put(key uint64, offset uint32, size uint32) (int, error) {
|
||||
nm.m[key] = &NeedleValue{Offset: offset, Size: size}
|
||||
nm.m[key] = NeedleValue{Offset: offset, Size: size}
|
||||
util.Uint64toBytes(nm.bytes[0:8], key)
|
||||
util.Uint32toBytes(nm.bytes[8:12], offset)
|
||||
util.Uint32toBytes(nm.bytes[12:16], size)
|
||||
return nm.indexFile.Write(nm.bytes)
|
||||
}
|
||||
func (nm *NeedleMap) Get(key uint64) (element *NeedleValue, ok bool) {
|
||||
func (nm *NeedleMap) Get(key uint64) (element NeedleValue, ok bool) {
|
||||
element, ok = nm.m[key]
|
||||
return
|
||||
}
|
||||
|
@ -76,3 +76,6 @@ func (nm *NeedleMap) Delete(key uint64) {
|
|||
func (nm *NeedleMap) Close() {
|
||||
nm.indexFile.Close()
|
||||
}
|
||||
func (nm *NeedleMap) Length() int{
|
||||
return len(nm.m)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue