У меня есть этот проект, который называется Memcached.Js , который является портом сервера Memcached для Node.js.
Я играл со строками и буферами, сравнивая памятьслед и производительность.Что касается памяти, нет сомнений в том, что буфер является правильным выбором.
Но, к моему удивлению, то же самое не относится к производительности.Манипулирование строками выполняется быстрее, чем использование буфера.Вот что я попробовал:
// Option 1: data.toString() - amazing, but it's the best one
var commandDataStr = mdata.data.toString().substr(startPos, bytes);
var commandData = new Buffer(commandDataStr);
// Option 2: data.slice().toString() - the same as above... What?
var commandDataStr = mdata.data.slice(startPos, startPos + bytes).toString();
var commandData = new Buffer(commandDataStr);
// Option 3: data.slice() - bad
var commandData = mdata.data.slice(startPos, startPos + bytes);
// Option 4: data.copy() - bad as well
var commandData = new Buffer(bytes);
mdata.data.copy(commandData, 0, startPos, startPos + bytes);
Полный код здесь: https://github.com/dalssoft/memcached.js/blob/master/lib/memcached.ascii.commands.js#L72
Тестирование кода: ruby test/from_clients/perf_test.rb
Тесты показали, что строки быстреечем буфер.Поскольку это не то, чего я ожидал, я думаю, что, вероятно, я делаю что-то не так, но я не могу точно найти, что это такое.
Может ли кто-нибудь помочь мне здесь?
Tks!