Size: a a a

2018 June 27

ПФ

Паша Финкельштейн in graalvm_ru
Oleg Shelajev
или вот я уменьшаю количество запросов и у меня падает latency —
GraalVM
→ wrk -c 30 -d 60 -t2 -L -R100000 http://localhost:8080/hello/AllworkandnoplaymakesOlegSad

#[Mean    =    21818.024, StdDeviation   =     8930.500]
#[Max     =    38371.328, Total count    =      1915890]
#[Buckets =           27, SubBuckets     =         2048]
----------------------------------------------------------
 2298393 requests in 1.00m, 234.54MB read
Requests/sec:  38307.75
Transfer/sec:      3.91MB

→ wrk -c 30 -d 60 -t2 -L -R30000 http://localhost:8080/hello/AllworkandnoplaymakesOlegSad
#[Mean    =       11.791, StdDeviation   =       57.551]
#[Max     =      547.840, Total count    =      1494089]
#[Buckets =           27, SubBuckets     =         2048]
----------------------------------------------------------
 1795263 requests in 1.00m, 183.19MB read
Requests/sec:  29921.27
Transfer/sec:      3.05MB


какой из них имеет более разумную интерпретацию в рамках вопроса быстрее ли Граль чем обычные джавы :)
понятно что латенси меньше при более низкой загрузку — меньше работы по переключению контекстов
источник

ПФ

Паша Финкельштейн in graalvm_ru
я бы писал JMH-бенч прям со спрингом и без использования http, но, ЕМНИП, JMH не умеет вграль пока что
источник

OS

Oleg Shelajev in graalvm_ru
Паша Финкельштейн
А можно как-то узнать, какие оптимизации смог произвести грааль, а какие С2?
прям такого что вот эта оптимизация была применена - наверное нет
источник

OS

Oleg Shelajev in graalvm_ru
источник

OS

Oleg Shelajev in graalvm_ru
printAssembly - и тд
источник

OS

Oleg Shelajev in graalvm_ru
jitWatch пока не работает
источник

OS

Oleg Shelajev in graalvm_ru
JMH умеет в граль )
источник

ПФ

Паша Финкельштейн in graalvm_ru
так
источник

OS

Oleg Shelajev in graalvm_ru
источник

p

pragus in graalvm_ru
Паша Финкельштейн
Ты понимаешь, что яне про конкретные цифры говорю, да?
не очень )))
источник

OS

Oleg Shelajev in graalvm_ru
как бы там конечно всегда остаются моменты что компилятор может обхитрить JMH — но в общем и целом там есть поддержка )
источник

ПФ

Паша Финкельштейн in graalvm_ru
pragus
не очень )))
ну просто конкретные цифры неинтересны из-за разного железа. Важно то, что у меня всегда делается столько запросов в секунду, сколько я попрошу. А у Олега — нет
источник

ПФ

Паша Финкельштейн in graalvm_ru
Oleg Shelajev
как бы там конечно всегда остаются моменты что компилятор может обхитрить JMH — но в общем и целом там есть поддержка )
так а почему тогда не запустить JMH прямо на этот метод? зачем сюда вмешивать http-стек?
источник

ПФ

Паша Финкельштейн in graalvm_ru
или ты хочешь именно webflux тестировать?
источник

OS

Oleg Shelajev in graalvm_ru
ну это не интересно 1 метож
источник

OS

Oleg Shelajev in graalvm_ru
источник

OS

Oleg Shelajev in graalvm_ru
вот на 1 метод бенч
источник

ПФ

Паша Финкельштейн in graalvm_ru
ну там не стримы, там влакс и всё такое )
источник

OS

Oleg Shelajev in graalvm_ru
@Warmup(iterations = 1)
@Measurement(iterations = 3)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Fork(1)
public class JavaSimpleStreamBenchmark {

 static int[] values = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 @Benchmark
 public int testMethod() {
   return Arrays.stream(values)
     .map(x -> x + 1)
     .map(x -> x * 2)
     .map(x -> x + 2)
     .reduce(0, Integer::sum);
 }
источник

ПФ

Паша Финкельштейн in graalvm_ru
но я предлагаю дёргать вместе со всем спрингом, просто хттп-стек не задействовать
источник