Browse Source

tweak performance

Tao Wen 8 years ago
parent
commit
77dcffe77d
2 changed files with 8 additions and 5 deletions
  1. 5 4
      feature_iter_object.go
  2. 3 1
      feature_pool.go

+ 5 - 4
feature_iter_object.go

@@ -3,6 +3,7 @@ package jsoniter
 import (
 	"fmt"
 	"unicode"
+	"unsafe"
 )
 
 func (iter *Iterator) ReadObject() (ret string) {
@@ -79,13 +80,13 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool {
 		c = iter.nextToken()
 		if c == '"' {
 			iter.unreadByte()
-			field := string(iter.readObjectFieldAsBytes())
-			if !callback(iter, field) {
+			field := iter.readObjectFieldAsBytes()
+			if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
 				return false
 			}
 			for iter.nextToken() == ',' {
-				field = string(iter.readObjectFieldAsBytes())
-				if !callback(iter, field) {
+				field = iter.readObjectFieldAsBytes()
+				if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
 					return false
 				}
 			}

+ 3 - 1
feature_pool.go

@@ -1,6 +1,8 @@
 package jsoniter
 
-import "io"
+import (
+	"io"
+)
 
 func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream {
 	select {