Я пытаюсь выполнить некоторую обработку текста в браузере и пытаюсь получить грубое представление о том, буду ли я привязан к процессору или к вводу / выводу.Чтобы проверить скорость на стороне процессора в уравнении, я вижу, как быстро можно разделить фрагмент текста (~ 8,9 МБ - это Шерлок Холмс проекта Гутенберга *1004*, повторенный несколько раз) в Javascript один разэто в памяти.На данный момент я просто делаю:
pieces = theText.split(" ");
и выполняю его 100 раз и получаю среднее значение.На Macbook Pro i5 2011 года среднее разделение в Firefox занимает 92,81 мс, а в Chrome 237,27 мс.Таким образом, 1000 / 92,81 мс * 8,9 МБ = 95,8 МБ / с на процессоре, что, вероятно, немного быстрее, чем ввод-вывод жесткого диска, но ненамного.
Так что мой вопрос на самом деле состоит из трех частей:
- Существуют ли альтернативы Javascript для
split()
, которые, как правило, быстрее выполняются при простой обработке текста (например, разбиение на пробелы, переносы строк и т. Д.)? - Являются ли слабые результаты ЦП Iя вижу здесь, скорее всего, из-за фундаментального совпадения строк / алгоритмических ограничений, или же выполнение Javascript просто медленное?
- Если вы считаете, что Javascript, вероятно, является ограничивающим фактором, можете ли вы продемонстрировать существенно более высокую производительность на сопоставимом компьютере / сопоставимом тексте на любом другом языке программирования?
Редактировать: Я также подозреваю, что этоможно было бы ускорить работу с WebWorkers, хотя сейчас я в основном заинтересован в однопоточных подходах.