32 lines
		
	
	
		
			771 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			771 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package jsonhelper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"encoding/json"
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var jsonStr = `{"W":1561651}`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var obj struct {
							 | 
						||
| 
								 | 
							
									W int
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 对比下 IJson 和 系统自带的 json 的效率
							 | 
						||
| 
								 | 
							
								// go test -bench=_QE_ -benchmem -run=^$
							 | 
						||
| 
								 | 
							
								// -benchtime 默认为1秒  -benchmem 获得内存分配的统计数据
							 | 
						||
| 
								 | 
							
								func Benchmark_QE_1(b *testing.B) {
							 | 
						||
| 
								 | 
							
									for i := 0; i < b.N; i++ {
							 | 
						||
| 
								 | 
							
										json.Unmarshal([]byte(jsonStr), &obj)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func Benchmark_QE_2(b *testing.B) {
							 | 
						||
| 
								 | 
							
									for i := 0; i < b.N; i++ {
							 | 
						||
| 
								 | 
							
										Unmarshal([]byte(jsonStr), &obj)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Benchmark_QE_1-6         2252055               531.2 ns/op           240 B/op          6 allocs/op
							 | 
						||
| 
								 | 
							
								// Benchmark_QE_2-6         7650109               158.7 ns/op            16 B/op          1 allocs/op
							 | 
						||
| 
								 | 
							
								// 确实快了很多  不知道复杂的结构会不会不一样
							 |