go json編譯原理XJSON實(shí)現(xiàn)四則運(yùn)算
在上一篇中介紹了xjson的功能特性以及使用查詢語(yǔ)法快速方便的獲取JSON中的值。

同時(shí)這次也更新了一個(gè)版本,主要是兩個(gè)升級(jí):
- 對(duì)轉(zhuǎn)義字符的支持。
- 性能優(yōu)化,大約提升了30%??。
轉(zhuǎn)義字符
先說(shuō)第一個(gè)轉(zhuǎn)義字符,不管是原始JSON字符串中存在轉(zhuǎn)義字符,還是查詢語(yǔ)法中存在轉(zhuǎn)義字符都已經(jīng)支持,具體用法如下:
str = `{"1a.b.[]":"b"}`
get = Get(str, "1a\\.b\\.\\[\\]")
assert.Equal(t, get.String(), "b")
str = `{".":"b"}`
get = Get(str, "\\.")
assert.Equal(t, get.String(), "b")
str = `{"a":"{\"a\":\"123\"}"}`
get = Get(str, "a")
fmt.Println(get)
assert.Equal(t, get.String(), "{\"a\":\"123\"}")
assert.Equal(t, Get(get.String(), "a").String(), "123")
str = `{"a":"{\"a\":[1,2]}"}`
get = Get(str, "a")
fmt.Println(get)
assert.Equal(t, get.String(), "{\"a\":[1,2]}")
assert.Equal(t, Get(get.String(), "a[0]").Int(), 1)性能優(yōu)化
性能也有部分優(yōu)化,大約比上一版本提升了 30%。
pkg: github.com/crossoverJie/xjson/benckmark cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz BenchmarkDecode-121496877130 ns/op 44959 B/op 1546 allocs/op PASS ------------------------------------ pkg: github.com/crossoverJie/xjson/benckmark cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz BenchmarkDecode-121913662960 ns/op 41593 B/op 1407 allocs/op PASS
但總體來(lái)說(shuō)還有不少優(yōu)化空間,主要是上限畢竟低,和官方庫(kù)比還是有不小的差距。
實(shí)現(xiàn)四則運(yùn)算
接下來(lái)聊聊四則運(yùn)算是如何實(shí)現(xiàn)的,這本身算是一個(gè)比較有意思的feature,雖然用的場(chǎng)景不多
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信