Java NIO, использовать или не использовать рамки? - PullRequest
2 голосов
/ 20 февраля 2011

Я занимаюсь разработкой сервера на базе Java с мультиплексированием NIO, и я начал видеть множество платформ ... Я не понимаю, облегчают ли эти каркасы жизнь или она также увеличивает производительность (например,нетто)

Ответы [ 4 ]

4 голосов
/ 21 февраля 2011

Никакая структура не может увеличить производительность того, что под ней.В случае с NIO я пришел к выводу, что это уже сама структура.Я рассмотрел пару платформ NIO, таких как Mina, и действительно написал один сам, но сам пришел к выводу, что это в значительной степени напрасная трата усилий, которая в конечном итоге мешает так или иначе.Все, что вам нужно, это хорошо написанный цикл выбора и соответствующие структуры данных.

1 голос
/ 20 февраля 2011

Я думаю, суть в том, что они облегчают жизнь / ускоряют вашу производительность. Они могут быть более или менее производительными по сравнению друг с другом или с вашим собственным кодом (нет оснований полагать, что если вы закодируете его с нуля, вы получите более высокую производительность с первой попытки - конечно, в конечном счете, вы владеете им, так что вы можете оптимизировать его для смерть, если хотите и у вас есть время).

В конечном итоге все они используют инфраструктуру и классы Java NIO, и единственный способ превзойти их - это создать собственный JNI - при условии, что вы добились успеха - это сложная штука, действительно отдельная специальность в программировании.

0 голосов
/ 22 марта 2011

Это действительно зависит от вашего уровня знаний с java.nio API.Если вы не уверены в том, как все работает, вам, вероятно, следует использовать сторонний API.Если вы знаете, как все работает и способны писать код без стороннего API, то вам определенно следует использовать свой собственный код без каких-либо прикрепленных строк.Вы можете добиться более высокой производительности без дополнительных действий (сторонних API).

Мне нравится жить по принципу KISS .

0 голосов
/ 20 февраля 2011

Это зависит от того, что вы пытаетесь сделать.Платформы NIO полезны, потому что они предоставляют вам абстракцию основных действий NIO.Хотя они вынуждают вас использовать несколько шаблонов проектирования, которые вам могут быть неудобны.

Если вы считаете, что адаптируетесь к этим шаблонам проектирования, вам, вероятно, следует использовать каркас.У него будет меньше ошибок, у вас будет меньше работы, и в конечном итоге вы не увидите, где происходит все действие.Вам просто нужно сосредоточиться на том, чего вы пытаетесь достичь.

Это имеет некоторые дополнительные издержки по сравнению с «домашним» решением, но оно незначительно.

...