Android PipedOutputStream / PipedInputStream передача байта за байтом кажется неправильной - PullRequest
3 голосов
/ 01 марта 2011

Реализация Android PipedOutputStream

write(byte[] buffer, int offset, int count) 

реализована в терминах записи (байтовый один байт).Более конкретно, PipedOutputStream

write(byte[] buffer, int offset, int count)

реализован путем циклического перемещения по буферу byte [] и вызова записи (byte oneByte) для каждого байта.См. this .

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

Я вижу, что это правильная реализация, но медленная.Может быть, есть какое-то соглашение Java, которое каким-то образом делает это неправильно?Поскольку запись массива в PipedOutputStream теперь чередуется с уведомлениями PipedInputStream.

write [abc] приводит к записи (a), уведомлению, записи (b), уведомлению, записи (c), уведомлению.

1 Ответ

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

Да, код, который вы связали, похоже, подразумевает, что он использует реализацию по умолчанию OutputStream для отправки каждого byte как есть.Насколько я знаю, этот на самом деле правильный, но, вероятно, довольно неэффективный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...