Файлы переписываются в base64Зачем? можно же грузить как есть...
base64 записывается в файл на сервере, а данные о работе в бд MongoDBнасколько понимаю, что-то вроде
fs.writeFile('...', Buffer.from(data, 'base64'), err => ...)
? Опять же, если не извращаться с base64 - можно убрать все в фон: req.pipe(fs.createWriteStream('...'));
base64 считывается в массив построчно (в одном файле до 6 строк картинок) и отправляется на клиента это вообще nginx'у оставьте, он лучше с раздачей файлов справится
- производительность нижеРегулярка в принципе не может быть быстрее линейного поиска, так как компилируется (ах да, ее еще надо скомпилировать в рантайме) в конечный автомат, который в лучшем случае сводится к линейному поиску
- кода большестранная претензия...
- код сложнее понятьу регулярок? да, регулярки вообще нечитаемое нечто
- "а еще кроме строк можно и массивы той же функцией обрабатывать" я бы не стал позиционировать это как преимущество решенияв конкретной задаче соглашусь, не особое преимущество, но вообще, переиспользуемость - важный критерий
Все таки, когда речь заходит о производительности, я считаю хорошей практикой подкреплять утверждения, что что-то работает быстрее или медленнее какими-то бенчмарками или другими измерениямиСинтетические бенчмарки слабо коррелируют с действительностью. За долгие годы я видел единичные реализации, работавшие корректно, с отключением всех оптимизаций и т.д. Я не большой спец по написанию бенчмарков, чтоб их писать, в своей обычной жизни я привык полагаться на знания, какие алгоритмы работают под капотом, и какая у них сложность в нотациях О-большое и Омега-большое. И этот опыт мне говорит, что линейный поиск - это O(n), а регулярка - O(n log n)
На скорую руку, я бы это переделал так.переиспользуемость страдает. В примере автора вопроса я могу использовать spy многократно, на разных функциях или много раз на одной, но я получу каждый раз новую обертку с новым логом вызовов.
// Вот тут начинается полный говнокод.и в чем говнокод? Определить еще одно поле на созданном в этой же функции объекте (пусть даже функциональном) - это вполне нормальная практика.
var label = getLabelForInput(input)
на spider-monkey будет тот же merge-sort только написанный на плюсах и работающий быстрее
на v8 будет qsort, который в большинстве случаев работает с той же скоростью, что и merge-sort