From 9232b8275f1f5d1e7bf1b66206d44a7baa735c93 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Tue, 28 Jul 2015 12:52:38 +1000 Subject: [PATCH] Don't convert uint64 to interface{} for the context key every time. This accounts for ~80% of gcsfuse allocations. --- connection.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/connection.go b/connection.go index 8304032..102a07d 100644 --- a/connection.go +++ b/connection.go @@ -32,7 +32,7 @@ import ( type contextKeyType uint64 -const contextKey contextKeyType = 0 +var contextKey interface{} = contextKeyType(0) // Ask the Linux kernel for larger read requests. // @@ -447,7 +447,9 @@ func (c *Connection) ReadOp() (ctx context.Context, op interface{}, err error) { // LOCKS_EXCLUDED(c.mu) func (c *Connection) Reply(ctx context.Context, opErr error) { // Extract the state we stuffed in earlier. - state, ok := ctx.Value(contextKey).(opState) + var key interface{} = contextKey + foo := ctx.Value(key) + state, ok := foo.(opState) if !ok { panic(fmt.Sprintf("Reply called with invalid context: %#v", ctx)) }