Почему v8 :: JSON :: Parse из v8 намного медленнее, чем NodeJS JSON :: parse?

Я знаю, что NodeJS построен поверх V8. Вот почему это выглядит так странно, когда моя оболочка c ++ вокруг v8 анализирует файл json (2 Мб) за 394 секунды, а сценарии NodeJS анализируют тот же файл json за 167 секунд.

В C ++ я так называю parse json

v8::MaybeLocal<v8::Value> jsonData = v8::JSON::Parse(isolate, v8::String::NewFromUtf8(isolate, data));

и в NodeJS JSON.parse(data),

Также, когда я звоню v8::JSON::Parse в такой петле

for (int i = 0; i < 1000; i++) {
v8::JSON::Parse(isolate, v8::String::NewFromUtf8(isolate, data));
}

он съедает всю мою память, а OOM Killer убивает мое приложение. Почему это работает таким образом? Может быть, эта функция содержит утечки памяти или мне нужно что-то освободить.

Большое спасибо!

0

Решение

Могу только поспорить, что в чистом использовании v8 json, возвращенный из ‘JSON :: parse’, сразу уничтожается, тогда как в node.js он собирает мусор либо асинхронно, либо вне цикла. Попробуйте разделить возвращенные файлы jsons на восстановленный вектор и посмотрите, повысится ли производительность.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector