История изменений
Исправление AntonI, (текущая версия) :
Потому что гладиуолус ветвления.
Рассмотрим произвольный json файл. Я не делал профилирование разбора, тем более на яве, но могу предположить что основные ресуры уйдут на:
-
преобразование строк в числа
-
набивку ассоциативных массивов, если там есть словари
-
работу с менеджером памяти.
Если мы говорим про аппаратную реализацию SIMD на основе SSE/AVX, то ни один из этих пунктов толком ускорен быть не может - потому что входные данные в общем случае произвольны, и ветвления сьедят весь профит. Если мы говорим про SIMD как про реализацию какой то явовской конструкции в виде обычного цикла, даже развернутого, то тем более не понятно как здесь можно обогнать те же плюсы - в плюсах компилятор такие вещи делает по умолчанию.
Можно только говорить про более прямую реализацию изначально кривых либ для парсинга.
Да и сама постановка задачи звучит двольно смешно - мы хотим ускорить парсинг джисона! Блджад, нормальные люди не хранят большие обьемы данных в джисоне - большие обьемы данных хранятся в бинарных форматах допускающих мапирование в память. Поэтому парсинг не является узким место ни разу, и ускорять его довольно глупо. SIMD используется для обработки этих обьемов, и то это не всегда возможно, есть целая куча ограничений. Собственно из всех видов параллелизма сейчас векторизацию использовать сложнее всего, скажем даже для stencil вычислений, где данные уже подготовены и лежат в упорядоченной струкутре стройными рядами, векторизацию использовать ой как непросто…
Исправление AntonI, :
Потому что гладиуолус ветвления.
Рассмотрим произвольный json файл. Я не делал профилирование разбора, тем более на яве, но могу предположить что основные ресуры уйдут на:
-
преобразование строк в числа
-
набивку ассоциативных массивов, если там есть словари
-
работу с менеджером памяти.
Если мы говорим про аппаратную реализацию SIMD на основе SSE/AVX, то ни один из этих пунктов толком ускорен быть не может - потому что входные данные в общем случае произвольны, и ветвления сьедят весь профит. Если мы говорим про SIMD как про реализацию какой то явовской конструкции в виде обычного цикла, даже развернутого, то тем более не понятно как здесь можно обогнать те же плюсы - в плюсах компилятор такие вещи делает по умолчанию.
Можно только говорить про более прямую реализацию изначально кривых либ для парсинга.
Да и сама постановка задачи звучит двольно смешно - мы хоти ускорить парсинг джисона! Блджад, нормальные люди не хранят большие обьемы данных в джисоне - большие обьемы данных хранятся в бинарных форматах допускающих мапирование в память. SIMD используется для обработки этих обьемов, и то это не всегда возможно, есть целая куча ограничений. Собственно из всех видов параллелизма сейчас векторизацию использовать сложнее всего, скажем даже для stencil вычислений, где данные уже подготовены и лежат в упорядоченной струкутре стройными рядами, векторизацию использовать ой как непросто…
Исходная версия AntonI, :
Потому что гладиуолус ветвления.
Рассмотрим произвольный json файл. Я не делал профилирование разбора, тем более на яве, но могу предположить что основные ресуры уйдут на:
-
преобразование строк в числа
-
набивку ассоциативных массивов, если там есть словари
-
работу с менеджером памяти.
Если мы говорим про аппаратную реализацию SIMD на основе SSE/AVX, то ни один из этих пунктов тольком ускорен быть не может - потому что входные данные в общем случае произвольны, и ветвления сьедят весь профит. Если мы говорим про SIMD как про реализацию какой то явовской конструкции в виде обычного цикла, даже развернутого, то тем более не понятно как здесь можно обогнать те же плюсы - в плюсах компилятор такие вещи делает по умолчанию.
Можно только говорить про более прямую реализацию изначально кривых либ для парсинга.
Да и сама постановка задачи звучит двольно смешно - мы хоти ускорить парсинг джисона! Блджад, нормальные люди не хранят большие обьемы данных в джисоне - большие обьемы данных хранятся в бинарных форматах допускающих мапирование в память. SIMD используется для обработки этих обьемов, и то это не всегда возможно, есть целая куча ограничений. Собственно из всех видов параллелизма сейчас векторизацию использовать сложнее всего, скажем даже для stencil вычислений, где данные уже подготовены и лежат в упорядоченной струкутре стройными рядами, векторизацию использовать ой как непросто…