История изменений
Исправление
vertexua,
(текущая версия)
:
Скоро будет еще много интересных срачей и бенчмарков. На shootout например есть такой бенчмарк
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html
regex-redux
source secs mem gz busy cpu load
Rust 2.12 153,184 986 3.15 15% 33% 85% 15%
Java 10.25 634,884 740 30.23 68% 95% 67% 65%
Я решил добавить WebAssembly через WASI/wasmtime (http://wasmtime.dev) бенчмарк. Это JIT к WebAssembly плюс системный интерфейс к IO.
Увы проект на ранних стадиях и не умеет в многопоточность, потому чтобы было чесно я убрал rayon из Rust версии и parallelStreams() из Java. Потом собрал Rust бенчмарк з --target=wasm32-wasi
source secs mem
Rust 2.12 153,184
WebAssembly 8.7 328,712
Java 10.25 634,884
Вот так WebAssembly JIT написаный считай позавчера уделал Java на одном ядре (понятно что отсутсвие многопоточности - сильный минус). До натива еще далеко конечно.
Что интересно, в Java использовался встроеный движек регулярных выражений. В Rust использовался regex
crate. В WebAssembly тот же regex
был полностью (!!!) скомпилирован в WebAssembly, что означает что мы сделали тест достаточно высокой сложности как для экспериментального рантайма.
WebAssembly конечно нужно подтянуться, иначе он не потеснит натив на серверах, учитывая что почти всегда можно собрать натив. Только если он процентов на 5 будет уступать, тогда удобство единого файла для всех архитектур перевесит.
Наблюдаем. stevejobs, иди защищай Java
Исправление
vertexua,
:
Скоро будет еще много интересных срачей и бенчмарков. На shootout например есть такой бенчмарк
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html
regex-redux
source secs mem gz busy cpu load
Rust 2.12 153,184 986 3.15 15% 33% 85% 15%
Java 10.25 634,884 740 30.23 68% 95% 67% 65%
Я решил добавить WebAssembly через WASI/wasmtime (http://wasmtime.dev) бенчмарк. Это JIT к WebAssembly плюс системный интерфейс к IO.
Увы проект на ранних стадиях и не умеет в многопоточность, потому чтобы было чесно я убрал rayon из Rust версии и parallelStreams() из Java. Потом собрал Rust бенчмарк з --target=wasm32-wasi
source secs mem
Rust 2.12 153,184
WebAssembly 8.7 328,712
Java 10.25 634,884
Вот так WebAssembly JIT написаный считай позавчера уделал Java на одном ядре (понятно что отсутсвие многопоточности - сильный минус). До натива еще далеко конечно.
Что интересно, в Java использовался встроеный движек регулярных выражений. В Rust использовался regex
crate. В WebAssembly он же был полностью (!!!) скомпилирован в WebAssembly, что означает что мы сделали тест достаточно высокой сложности как для экспериментального рантайма.
WebAssembly конечно нужно подтянуться, иначе он не потеснит натив на серверах, учитывая что почти всегда можно собрать натив. Только если он процентов на 5 будет уступать, тогда удобство единого файла для всех архитектур перевесит.
Наблюдаем. stevejobs, иди защищай Java
Исправление
vertexua,
:
Скоро будет еще много интересных срачей и бенчмарков. На shootout например есть такой бенчмарк
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html
regex-redux
source secs mem gz busy cpu load
Rust 2.12 153,184 986 3.15 15% 33% 85% 15%
Java 10.25 634,884 740 30.23 68% 95% 67% 65%
Я решил добавить WebAssembly через WASI/wasmtime (http://wasmtime.dev) бенчмарк. Это JIT к WebAssembly плюс системный интерфейс к IO.
Увы проект на ранних стадиях и не умеет в многопоточность, потому чтобы было чесно я убрал rayon из Rust версии и parallelStreams() из Java. Потом собрал Rust бенчмарк з --target=wasm32-wasi
source secs mem
Rust 2.12 153,184
WebAssembly 8.7 328,712
Java 10.25 634,884
Вот так WebAssembly JIT написаный считай позавчера уделал Java на одном ядре (понятно что отсутсвие многопоточности - сильный минус). До натива еще далеко конечно.
Что интересно, в Java использовался встроеный движек регулярных выражений. В Rust использовался regex
crate. В WebAssembly он же был полностью (!!!) скомпилирован в WebAssembly, что означает что мы сделали тест достаточно высокой сложности как для экспериментального рантайма.
Наблюдаем. stevejobs, иди защищай Java
Исправление
vertexua,
:
Скоро будет еще много интересных срачей и бенчмарков. На shootout например есть такой бенчмарк
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html
regex-redux
source secs mem gz busy cpu load
Rust 2.12 153,184 986 3.15 15% 33% 85% 15%
Java 10.25 634,884 740 30.23 68% 95% 67% 65%
Я решил добавить WebAssembly через WASI/wasmtime (http://wasmtime.dev) бенчмарк. Это JIT к WebAssembly плюс системный интерфейс к IO.
Увы проект на ранних стадиях и не умеет в многопоточность, потому чтобы было чесно я убрал rayon из Rust версии и parallelStreams() из Java. Потом собрал Rust бенчмарк з --target=wasm32-wasi
source secs mem
Rust 2.12 153,184
WebAssembly 8.7 328,712
Java 10.25 634,884
Вот так WebAssembly JIT написаный считай позавчера уделал Java на одном ядре (понятно что отсутсвие многопоточности - сильный минус). До натива еще далеко конечно.
Что интересно, в Java использовался встроеный движек регулярных выражений. В Rust использовался regex
crate. В WebAssembly он же был полностью (!!!) скомпилирован в WebAssembly, что означает что мы сделали тест достаточно высокой сложности как для экспериментального рантайма.
Наблюдаем. stevejobs
Исходная версия
vertexua,
:
Скоро будет еще много интересных срачей и бенчмарков. На shootout например есть такой бенчмарк
https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html
regex-redux
source secs mem gz busy cpu load
Rust 2.12 153,184 986 3.15 15% 33% 85% 15%
Java 10.25 634,884 740 30.23 68% 95% 67% 65%
Я решил добавить WebAssembly через WASI/wasmtime (http://wasmtime.dev) бенчмарк. Это JIT к WebAssembly плюс системный интерфейс к IO.
Увы проект на ранних стадиях и не умеет в многопоточность, потому чтобы было чесно я убрал rayon из Rust версии и parallelStreams() из Java. Потом собрал Rust бенчмарк з --target=wasm32-wasi
source secs mem
Rust 2.12 153,184
WebAssembly 8.7 328,712
Java 10.25 634,884
Вот так WebAssembly JIT написаный считай позавчера уделал Java на одном ядре (понятно что отсутсвие многопоточности - сильный минус). До натива еще далеко конечно.
Что интересно, в Java использовался встроеный движек регулярных выражений. В Rust использовался regex
crate. В WebAssembly он же был полностью (!!!) скомпилирован в WebAssembly, что означает что мы сделали тест достаточно высокой сложности как для экспериментального рантайма.
Наблюдаем.