未验证 提交 df12a312 编写于 作者: S satoru 提交者: GitHub

Avoid escapes to heap in frequently used functions (#20)

上级 fe58e3cd
...@@ -15,8 +15,14 @@ ...@@ -15,8 +15,14 @@
package meta package meta
import "strconv"
type Ino uint64 type Ino uint64
func (i Ino) String() string {
return strconv.FormatUint(uint64(i), 10)
}
type Context interface { type Context interface {
Gid() uint32 Gid() uint32
Uid() uint32 Uid() uint32
......
...@@ -139,7 +139,7 @@ func (r *redisMeta) Init(format Format) error { ...@@ -139,7 +139,7 @@ func (r *redisMeta) Init(format Format) error {
} }
func (r *redisMeta) Load() (*Format, error) { func (r *redisMeta) Load() (*Format, error) {
body, err := r.rdb.Get(c, "setting").Result() body, err := r.rdb.Get(c, "setting").Bytes()
if err == redis.Nil { if err == redis.Nil {
return nil, fmt.Errorf("no volume found") return nil, fmt.Errorf("no volume found")
} }
...@@ -147,7 +147,7 @@ func (r *redisMeta) Load() (*Format, error) { ...@@ -147,7 +147,7 @@ func (r *redisMeta) Load() (*Format, error) {
return nil, err return nil, err
} }
var format Format var format Format
err = json.Unmarshal([]byte(body), &format) err = json.Unmarshal(body, &format)
if err != nil { if err != nil {
return nil, fmt.Errorf("json: %s", err) return nil, fmt.Errorf("json: %s", err)
} }
...@@ -173,19 +173,19 @@ func (r *redisMeta) newMsg(mid uint32, args ...interface{}) error { ...@@ -173,19 +173,19 @@ func (r *redisMeta) newMsg(mid uint32, args ...interface{}) error {
var c = context.TODO() var c = context.TODO()
func (r *redisMeta) sessionKey(sid int64) string { func (r *redisMeta) sessionKey(sid int64) string {
return fmt.Sprintf("session%d", r.sid) return "session" + strconv.FormatInt(sid, 10)
} }
func (r *redisMeta) symKey(inode Ino) string { func (r *redisMeta) symKey(inode Ino) string {
return fmt.Sprintf("s%d", inode) return "s" + inode.String()
} }
func (r *redisMeta) inodeKey(inode Ino) string { func (r *redisMeta) inodeKey(inode Ino) string {
return fmt.Sprintf("i%d", inode) return "i" + inode.String()
} }
func (r *redisMeta) entryKey(parent Ino) string { func (r *redisMeta) entryKey(parent Ino) string {
return fmt.Sprintf("d%d", parent) return "d" + parent.String()
} }
func (r *redisMeta) chunkKey(inode Ino, indx uint32) string { func (r *redisMeta) chunkKey(inode Ino, indx uint32) string {
...@@ -193,11 +193,11 @@ func (r *redisMeta) chunkKey(inode Ino, indx uint32) string { ...@@ -193,11 +193,11 @@ func (r *redisMeta) chunkKey(inode Ino, indx uint32) string {
} }
func (r *redisMeta) xattrKey(inode Ino) string { func (r *redisMeta) xattrKey(inode Ino) string {
return fmt.Sprintf("x%d", inode) return "x" + inode.String()
} }
func (r *redisMeta) flockKey(inode Ino) string { func (r *redisMeta) flockKey(inode Ino) string {
return fmt.Sprintf("lockf%d", inode) return "lockf" + inode.String()
} }
func (r *redisMeta) ownerKey(owner uint64) string { func (r *redisMeta) ownerKey(owner uint64) string {
...@@ -205,7 +205,7 @@ func (r *redisMeta) ownerKey(owner uint64) string { ...@@ -205,7 +205,7 @@ func (r *redisMeta) ownerKey(owner uint64) string {
} }
func (r *redisMeta) plockKey(inode Ino) string { func (r *redisMeta) plockKey(inode Ino) string {
return fmt.Sprintf("lockp%d", inode) return "lockp" + inode.String()
} }
func (r *redisMeta) nextInode() (Ino, error) { func (r *redisMeta) nextInode() (Ino, error) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册