Почему следующий API Java NIO такой медленный по сравнению с nettyJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему следующий API Java NIO такой медленный по сравнению с netty

Сообщение Anonymous »

У меня есть следующая реализация JAVA для создания простого веб-сервера с использованием NIO API.

Код: Выделить всё

package zion

import java.net._
import java.nio.ByteBuffer
import java.nio.channels._

object NHello {

import java.nio.CharBuffer
import java.nio.charset.Charset

def helloWorldBytes: ByteBuffer = Charset
.forName("ISO-8859-1")
.newEncoder
.encode(CharBuffer.wrap(httpResponse("NHello World\n")))

def httpResponse(content: String): String = {
val rn = "\r\n"
List(
"HTTP/1.1 200 OK",
"Content-Type: text/html",
"Connection: Keep-Alive",
s"Content-Length: ${content.length()}",
rn + content
).mkString(rn)
}

def main(args: Array[String]): Unit = {
val port    = 8080
val address = new InetSocketAddress(port)

// Server Socket Channel
val serverSocketChannel = ServerSocketChannel.open()
serverSocketChannel.bind(address)
serverSocketChannel.configureBlocking(false)

// Selector
val selector = Selector.open()
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT)

while (true) {
selector.select()
val iterator = selector.selectedKeys().iterator()
while (iterator.hasNext) {
val key = iterator.next()
if (key.isAcceptable) {
val channel = serverSocketChannel.accept()
channel.write(helloWorldBytes)
channel.close()
}

}
iterator.remove()
}

sys.addShutdownHook({
println("Shutting down...")
serverSocketChannel.close()
})

println("Exiting...")
}
}
Используя wrk, я получаю около нескольких тысяч запросов в секунду.

Код: Выделить всё

wrk -t12 -c100 -d10s http://127.0.0.1:8080
Это кажется слишком медленным по сравнению с Netty. С Netty я могу повысить пропускную способность как минимум в 10–15 раз. Учитывая, что Netty также построена на базе NIO, что я делаю не так?

Есть ли какие-то очевидные улучшения производительности, которых мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/615 ... d-to-netty
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Недоумение по поводу производительности Leetcode 11: почему мой ответ такой медленный по сравнению с этим? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    97 Просмотры
    Последнее сообщение Anonymous
  • Почему тот же импорт Python в Windows такой медленный по сравнению с Linux? (Убунту)
    Anonymous » » в форуме Linux
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Проблема с GRPC с потоками Netty Nio
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Проблемы Azure с транзитивной зависимостью Netty (NoClassDefFoundError: io/netty/resolver/AddressResolverGroup)
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Почему PHP Composer такой медленный?
    Anonymous » » в форуме Php
    1 Ответы
    11 Просмотры
    Последнее сообщение Гость

Вернуться в «JAVA»