powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Затратная по времени операция записи в память контроллера
9 сообщений из 9, страница 1 из 1
Затратная по времени операция записи в память контроллера
    #38829783
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется контроллер с флеш памятью. По протоколу UDP передаются данные в контроллер для записи. При получении посланного мною пакета обратно отправляется квитанция. Пакеты отправляются и данные записываются. Проблема в том, что данная операция является очень затратной по времени, а именно от отправления пакета до получения квитанции. Имеется предположение, что где-то в недрах функции receive, класса DatagramSocket, имеется некий таймаут, из-за которого происходит некоторое торможение.
Может кто-то сталкивался с данной ситуацией?
Возможно ли получить пакет не с помощью класса DatagramSocket? Если да, то как?
Заранее спасибо.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38829806
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin1706,

боюсь, что тут проблема не в датаграмме, т.к. квитанцию отправляет контроллер. А таймаут в слушателе проверил?
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38829928
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таймаут упоминается в socketReceiveOrPeekData класса DualStackPlainDatagramSocketImpl, но посмотреть его значение не могу.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830068
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin1706, можно посмотреть исходники DatagramSocket и узнать как он внутри устроен.
Но вряд-ли это даст пользу. JDK достаточно хорошо оптимизирована чтобы не замечать подобные вещи.

Я-бы померял время между завершением приёма пакета в контроллере и завершением выдачи квитанции.
Это время может в 10,100 или 1000 крат превышать накладные расходы на обработку receive.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830141
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что та же самая операция, только написана на С, выполняется в десятки раз быстрее. Контроллер обрабатывает пакеты достаточно быстро.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830203
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше тогда смотреть в код.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830217
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
повторюсь, есть ли возможность получать пакеты не через DatagramSocket?
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830325
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO Тут два решения:
1. Трассировать, разбираться. Раз есть эталонный и хорошо работающий код на C, пытаться понять, чем алгоритм в Java отличается
2. Оформить хорошо работающий C-код как native library и юзать его
1. А автор не так уж не прав....

https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/solaris/native/java/net/PlainDatagramSocketImpl.c

не очень понятный мне вызов ф-ции NET_TimeOut. Не очень понятно, как оно реализовано (с ходу в google нашел только реализацию для FreeBSD). Но в любом случае, как я понимаю, никто не мешает ее отключить. Дабы ее вызов и обработка сидит в if.

Только, вроде 0 это значение по умолчанию для timeout.

2. Еще более чудесатей net_util_md.h
Вроде NET_TimeOut реализовано только для Linux. На Windows вместо него используется JVM_TimeOut. Исходников не нашел.

Вообще, интересная тема. У меня тоже претензии к Java по скорости обмена по сети были ((( Но я тогда глубоко копать не стал. Проблема была решена, деньги мне заплатили, надежды на нормальный стенд умерли. Техники для экспериментов не было (((

IMHO как-то больно мудрено нативный код написан.
...
Рейтинг: 0 / 0
Затратная по времени операция записи в память контроллера
    #38830346
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, будем разбираться.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Затратная по времени операция записи в память контроллера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]