Created
January 2, 2020 23:54
-
-
Save klimashkin/dbf654fd4d2e06cb3749364a949e3e07 to your computer and use it in GitHub Desktop.
Testing JSON/CBOR/MessagePack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable */ | |
const zlib = require('zlib'); | |
const chalk = require('chalk'); | |
let encode; | |
let decode; | |
let objEncoded; | |
let timeString; | |
const obj = {"result":{"skip":30,"count":873404,"photos":[{"s":5,"cid":1027669,"file":"e/d/1/ed1gex85ezaosljs9c.jpg?s=36ede5bca1","mime":"image/jpeg","title":"Liberazione di Roma","year":1944,"rs":[2436,2434,111]},{"s":5,"cid":1027662,"file":"x/l/y/xly08hxll6uppbx3vf.jpg?s=7cd564c0cd","mime":"image/jpeg","title":"Vue prise de la Terrasse de l'Hôtel des Anglais","year":1893,"rs":[1755,1750,818]},{"s":5,"cid":1027625,"file":"q/9/u/q9uw4l86ahaeowof27.jpg?s=625212031e","mime":"image/jpeg","title":"Вид на перекрёсток улицы Олеко Дундича и Бухарестской улицы","year":1996,"ccount":1,"rs":[703,5,1]},{"s":5,"cid":1027182,"file":"5/z/f/5zfhna3gmxlx0r74c1.jpg?s=02ff72f981","mime":"image/jpeg","title":"Брейк-данс на Арбате","year":1994,"rs":[396,3,1]},{"s":5,"cid":1017368,"file":"0/z/c/0zchyf4fdhuee3jej7.jpg?s=d063ce62ae","mime":"image/jpeg","title":"Площадь перед административным корпусом станции «Уват»","year":1985,"rs":[0,1694,335,1]},{"s":5,"cid":1027661,"file":"7/g/0/7g0y7nzx40o6su15bm.jpg?s=46d1efc7c8","mime":"image/jpeg","title":"Liberazione di Roma","year":1944,"rs":[2436,2434,111]},{"s":5,"cid":1017337,"file":"k/s/d/ksdayt8wb10tuzvjm5.jpg?s=f4598500cb","mime":"image/jpeg","title":"Нефтеперекачивающая станция «Уват»","year":1985,"rs":[0,1694,335,1]},{"s":5,"cid":1017327,"file":"t/7/v/t7vkmdv040hew7fwpl.jpg?s=c322b330b3","mime":"image/jpeg","title":"В столовой НПС «Уват»","year":1985,"rs":[0,1694,335,1]},{"s":5,"cid":1027659,"file":"c/n/k/cnkvma40gwcq5icl0q.jpg?s=5c955cf7a1","mime":"image/jpeg","title":"Pillau, Festungsgraben","year":1925,"rs":[3982,302,1]},{"s":5,"cid":1017623,"file":"c/r/f/crf1ojnbor8zd65m4v.jpg?s=12abedbc85","mime":"image/jpeg","title":"Вид улицы Дзержинского","year":1960,"rs":[2661,319,1]},{"s":5,"cid":1017618,"file":"v/4/h/v4h7wdjmjdfj8k4mw0.jpg?s=890dd24e66","mime":"image/jpeg","title":"Вид на школу №4","year":1960,"rs":[2661,319,1]},{"s":5,"cid":1027655,"file":"v/a/6/va6dxr5o1alqml6txt.jpg?s=7f766dffd4","mime":"image/jpeg","title":"La Jetée et la Promenade des Anglais","year":1893,"rs":[1755,1750,818]},{"s":5,"cid":1017325,"file":"n/8/f/n8fxtpg691bb3faoqn.jpg?s=387521c173","mime":"image/jpeg","title":"Нефтеперекачивающая станция «Уват»","year":1985,"rs":[1694,335,1]},{"s":5,"cid":1017314,"file":"v/5/n/v5nuh0ehavukt1sq1b.jpg?s=becce3ce01","mime":"image/jpeg","title":"Нефтеперекачивающая станция «Уват»","year":1985,"rs":[1694,335,1]},{"s":5,"cid":1017255,"file":"b/u/6/bu6y5h56t2dn4zvvyn.png?s=3490235c32","mime":"image/png","title":"У стелы в честь \"50-летия Карских операций на Енисее\"","year":1975,"rs":[6632,329,1]},{"s":5,"cid":1017304,"file":"y/d/m/ydm31mi5h0agqamvny.jpg?s=0ded195aa3","mime":"image/jpeg","title":"Палагубский маяк возле города Александровска (Полярный)","year":1904,"rs":[1904,322,1]},{"s":5,"cid":1017009,"file":"m/g/3/mg39c24ge08bqbe9er.jpg?s=28f0315d88","mime":"image/jpeg","title":"Ростовское. Церковь Троицы Живоначальной","year":1913,"rs":[2954,319,1]},{"s":5,"cid":1012665,"file":"t/p/g/tpgm9g5ae7ntbe9tht.png?s=c5aab1f90f","mime":"image/png","title":"Стела в честь \"50-летия Карских операций на Енисее\"","year":1975,"rs":[6632,329,1]},{"s":5,"cid":998068,"file":"q/z/3/qz38ev9iuinohf6ozm.jpg?s=bc7a2cbf46","mime":"image/jpeg","title":"Парк Горького. День Советской армии (?)","year":1989,"ccount":4,"rs":[0,609,3,1]},{"s":5,"cid":998023,"file":"7/n/v/7nv9vklhqdf0cj6zuc.jpg?s=e5438d3d26","mime":"image/jpeg","title":"Реутовские пионеры","year":1972,"rs":[553,3,1]},{"s":5,"cid":998024,"file":"u/z/r/uzrrhb7h4fk59hhtkc.jpg?s=cd26f45ebf","mime":"image/jpeg","title":"Реутовские пионеры","year":1972,"rs":[553,3,1]},{"s":5,"cid":708645,"file":"d/9/i/d9ir1s350z9edor06i.jpg?s=8ff2889e98","mime":"image/jpeg","title":"Меркушино","year":1890,"rs":[3344,334,1]},{"s":5,"cid":1027638,"file":"c/x/5/cx5zgjdmse5tfd3wgv.jpg?s=774da1f03f","mime":"image/jpeg","title":"Дом №55 по Первомайскому проспекту (не сохранился)","year":1974,"rs":[358,347,1]},{"s":5,"cid":1027637,"file":"c/g/a/cga69snpkxml6hdyp6.jpg?s=4780d83e64","mime":"image/jpeg","title":"L'Estérel, la Croizette et le Mont Chevalier","year":1895,"rs":[1761,1750,818]},{"s":5,"cid":1027629,"file":"7/v/b/7vbs27klob4tkhh56g.jpg?s=e18f998ea3","mime":"image/jpeg","title":"Pillau, Ilskefalle","year":1920,"rs":[3982,302,1]},{"s":5,"cid":1027640,"file":"1/y/4/1y48ldmltgzkgfzjnc.jpg?s=a291a9c713","mime":"image/jpeg","title":"Liberazione di Roma","year":1944,"rs":[2436,2434,111]},{"s":5,"cid":1027591,"file":"k/6/x/k6xx06tqf3l0ud4kpg.jpg?s=787e08c216","mime":"image/jpeg","title":"Королевские ворота","year":1995,"rs":[827,302,1]},{"s":5,"cid":1027590,"file":"m/j/d/mjdo72khnsz8ygh6wx.jpg?s=4efac715db","mime":"image/jpeg","title":"Королевские ворота","year":1995,"rs":[827,302,1]},{"s":5,"cid":1027636,"file":"1/d/l/1dlxdpnmr4yjrs66pn.jpg?s=e41f66de32","mime":"image/jpeg","title":"Liberazione di Roma","year":1944,"rs":[2436,2434,111]},{"s":5,"cid":1027622,"file":"3/w/7/3w7r65l6ks3tg5b689.jpg?s=e5fe1670f9","mime":"image/jpeg","title":"Салон магазин","year":1989,"rs":[405,3,1]}],"rhash":{"0":{"cid":0,"title_local":"Где это?"},"1":{"cid":1,"title_local":"Россия"},"3":{"cid":3,"title_local":"Москва"},"5":{"cid":5,"title_local":"Санкт-Петербург"},"111":{"cid":111,"title_local":"Италия"},"302":{"cid":302,"title_local":"Калининградская область"},"319":{"cid":319,"title_local":"Архангельская область"},"322":{"cid":322,"title_local":"Мурманская область"},"329":{"cid":329,"title_local":"Красноярский край"},"334":{"cid":334,"title_local":"Свердловская область"},"335":{"cid":335,"title_local":"Тюменская область"},"347":{"cid":347,"title_local":"Рязанская область"},"358":{"cid":358,"title_local":"Рязань"},"396":{"cid":396,"title_local":"Район Арбат"},"405":{"cid":405,"title_local":"Якиманка"},"553":{"cid":553,"title_local":"Красная площадь"},"609":{"cid":609,"title_local":"ЦПКиО имени Горького"},"703":{"cid":703,"title_local":"Фрунзенский район"},"818":{"cid":818,"title_local":"Франция"},"827":{"cid":827,"title_local":"Калининград"},"1694":{"cid":1694,"title_local":"Уватский район"},"1750":{"cid":1750,"title_local":"Метрополия Франция"},"1755":{"cid":1755,"title_local":"Ницца"},"1761":{"cid":1761,"title_local":"Канны"},"1904":{"cid":1904,"title_local":"ЗАТО Александровск"},"2434":{"cid":2434,"title_local":"Лацио"},"2436":{"cid":2436,"title_local":"Рим"},"2661":{"cid":2661,"title_local":"Вельск"},"2954":{"cid":2954,"title_local":"Виноградовский район"},"3344":{"cid":3344,"title_local":"Верхотурский городской округ"},"3982":{"cid":3982,"title_local":"Балтийск"},"6632":{"cid":6632,"title_local":"Игарка"}},"filter":{"r":[],"re":[],"rhash":{},"t":[1],"s":[5]}},"rid":"a5i96og0at","responseTime":1292}; | |
console.log('\n/** JSON **/'); | |
({stringify: encode, parse: decode} = JSON); | |
const objStringifiedBuffer = Buffer.from(encode(obj), 'utf-8'); | |
timeString = `Stringify (${chalk.magenta("Buffer.from(JSON.stringify(obj), 'utf-8')")}). Length: ${chalk.yellow(objStringifiedBuffer.length)}. Time`; | |
console.time(timeString); | |
for (let i = 0; i < 1000; i++) { | |
Buffer.from(encode(obj), 'utf-8'); | |
} | |
console.timeEnd(timeString); | |
timeString = `GZip. Length ${chalk.yellow(zlib.gzipSync(objStringifiedBuffer).length)}. Time`; | |
console.time(timeString); | |
for (let i = 0; i < 1000; i++) { | |
zlib.gzipSync(objStringifiedBuffer); | |
} | |
console.timeEnd(timeString); | |
console.time('Parse'); | |
for (let i = 0; i < 1000; i++) { | |
decode(objStringifiedBuffer.toString('utf8')); | |
} | |
console.timeEnd('Parse'); | |
console.log('\n/** CBOR \'cbor-sync\' **/'); | |
({encode, decode} = require('cbor-sync')); | |
timeString = `Encode. Length: ${chalk.yellow(encode(obj).length)}. Time`; | |
console.time(timeString); | |
for (let i = 0; i < 1000; i++) { | |
encode(obj); | |
} | |
console.timeEnd(timeString); | |
objEncoded = encode(obj); | |
console.time('Decode'); | |
for (let i = 0; i < 1000; i++) { | |
decode(objEncoded); | |
} | |
console.timeEnd('Decode'); | |
console.log('\n/** Message Pack \'@msgpack/msgpack\' **/'); | |
({encode, decode} = require('@msgpack/msgpack')); | |
timeString = `Encode. Length: ${chalk.yellow(encode(obj).length)}. Time`; | |
console.time(timeString); | |
for (let i = 0; i < 1000; i++) { | |
encode(obj); | |
} | |
console.timeEnd(timeString); | |
objEncoded = encode(obj); | |
console.time('Decode'); | |
for (let i = 0; i < 1000; i++) { | |
decode(objEncoded); | |
} | |
console.timeEnd('Decode'); | |
console.log('\n'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment