使用過JSON對象的程序員最常作的一項工做即是,將JSON對象轉化爲字符串。該字符串的用途不少,例如可使用在WEB的URL中,在多個頁面間進行傳遞。git
const obj = { id: 1, name: 'object' }; const jsonStr = JSON.stringify(obj); // 轉換爲字符串 const json = JSON.parse(jsonStr); // 解析字符串爲JSON對象
對於這個轉換過程咱們用的太駕輕就熟,因此不多再去思考這中間是否還有須要優化的地方。
其實只要稍微深刻思考一點,即便不讀源代碼,咱們也能得出這樣一個結論:在JSON對象轉化爲字符串時,是須要去識別某種模式的。程序員
例如:github
const obj = [{ id: 1, name: 'kobe' }, { id: 2, name: 'wade' }]; const jsonStr = JSON.stringify(obj); // 結果爲:[{"id":"1,"name":"kobe"},{"id":2,"name":"wade"}]
因此,若是要你去實現這樣一個stringify的過程,這些類型的識別和標註都是不可避免的花銷。json
就是在這樣一個邏輯小片斷上,fast-json-stringify想到了提升stringify效率的方案:提早定義要轉換對象的模式,那麼就能夠省去解析模式的時間開銷。優化
const fastJson = require('fast-json-stringify'); const stringify = fastJson({ title: 'player', type: 'object', properties: { name: { type: 'string' }, position: { type: 'string' }, age: { type: 'integer' } } }); console.log(stringify({ name: 'kobe', position: 'SG', age: 39 })); // {"name":"kobe","position":"SG","age":39}
從官網的介紹來看,在某些狀況下使用fast-json-stringify的效果能夠比JSON.stringify快接近10倍!ui
基於fast-json-stringify的優化內容,咱們很容易得出這樣一個結論:在全部常常須要對某些固定模式進行stringify的場合,都適合使用fast-json-stringify。由於模式是固定的,那麼定義模式的空間開銷必定比使用該模式生成字符串的時間開銷代價要小不少。spa