31 июля 2012 г.

Disruptor 3.0

ТАСС уполномочен заявить, что скоро выходит третья версия Disruptor-a. Michael Barker, который его сейчас развивает, дразнится — обещает прирост в производительности почти вдвое.

Если честно, мне сложно представить, чем еще можно ускорить простейший single publisher single subscriber случай. Но одно предположение у меня есть. Когда я гонял бенчмарки перед JavaOne, я пробовал заменять AtomicLongFieldUpdater.lazySet() на Unsafe.putOrderedLong(). Это то же самое по смыслу, но отсутствуют различные проверки доступа и type-safety. Разница была довольно существенной. Правда, не вдвое, процентов на 20-25. Но, поскольку больше возможностей я не вижу, то я ставлю на то, что в третьей версии Disruptor появится магический класс sun.misc.Unsafe.

Хотя будет гораздо интереснее, если я ошибусь, и будет что-то новенькое :)

3 комментария:

  1. В комментариях он сам говорит:

    Nothing specific, mostly code clean up, refactoring and simplification, the performance boost was a surprise

    Кроме того, многократное увеличение производительности было по throughput'у. Про latency, на которой, как я помню, ты (да и они) концентрировался, ничего не сказано. И мне как-то не очень верится, что просто порефакторив код можно добиться более чем 2-кратного улучшения throughput'a, не попортив при этом latency.

    ОтветитьУдалить
  2. Хотя если посмотреть на бенчмарки, то можно заметить, что раньше после прогрева был скачок 22 MB/s => 32 MB/s, а теперь 22 MB/s => 88 MB/s. Логично предположить, что код стал чище, и JIT смог применить какую-то хитрую оптимизацию.

    ОтветитьУдалить
  3. Я как раз фокусировался на пропускной способности -- ее измерять проще, да и в то время меня throughput интересовал больше.

    Вообще, да, я об этом не подумал -- могли как-то затюнить бэтчинг. Бэтчинг потенциально очень много может дать.

    >Логично предположить, что код стал чище, и JIT смог применить какую-то хитрую оптимизацию.

    Я вот с трудом могу себе представить, что там могло такое получиться. Там и до того был очень чистый и простой код.

    ОтветитьУдалить