@DataProvider(name = "buffers") public Object[][] createBuffers() { // test both on-heap and off-heap buffers as they make use different code paths returnnew Object[][]{ new Object[]{CharBuffer.allocate(BUFFER_SIZE)}, new Object[]{ByteBuffer.allocateDirect(BUFFER_SIZE * 2).asCharBuffer()}
};
}
StringBuilder input = new StringBuilder(BUFFER_SIZE - 2 + 1);
input.append("ABCDEF"); for (int i = 0; i < 8192; i++) {
input.append('y');
}
input.append("GH");
try (Reader reader = new UnoptimizedStringReader(input.toString())) { // put only between position and limit in the target buffer int limit = 1 + 6;
buffer.limit(limit);
buffer.position(1);
assertEquals(reader.read(buffer), 6);
assertEquals(buffer.position(), limit);
assertEquals(buffer.limit(), limit);
// read the full temporary buffer // and then accurately reduce the next #read call
limit = 8 + 8192 + 1;
buffer.limit(8 + 8192 + 1);
buffer.position(8);
assertEquals(reader.read(buffer), 8192 + 1);
assertEquals(buffer.position(), limit);
assertEquals(buffer.limit(), limit);
@Override publicint read(char cbuf[], int off, int len) throws IOException { synchronized (lock) {
Objects.checkFromIndexSize(off, len, cbuf.length); if (next >= str.length()) return -1; int n = Math.min(str.length() - next, len);
str.getChars(next, next + n, cbuf, off);
next += n; return n;
}
}
@Override publicvoid close() throws IOException {
}
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.9Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.