Skip to content

Instantly share code, notes, and snippets.

@klimashkin
Created January 2, 2020 23:54
Show Gist options
  • Save klimashkin/dbf654fd4d2e06cb3749364a949e3e07 to your computer and use it in GitHub Desktop.
Save klimashkin/dbf654fd4d2e06cb3749364a949e3e07 to your computer and use it in GitHub Desktop.
Testing JSON/CBOR/MessagePack
/* 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