Dim*_*ima 5 java serialization multithreading avro
我在网上的不同地方看到了一些关于此的相互矛盾的信息,所以希望得到真正知道的人的权威回答。
假设,我正在将一些内容序列化为 avro:
class StuffToAvro {
private final Schema schema;
StuffToAvro(Schema schema) { this.schema = schema }
void apply(GenericRecord stuff, OutputStream out) {
final Encoder encoder = EncoderFactory.get.binaryEncoder(out, null);
final GenericDatumWriter writer = new GenericDatumWriter(schema);
writer.write(stuff, encoder):
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我是否可以/应该通过重用编码器和编写器来优化它,如果我应该这样做,正确的方法是什么:我可以预先初始化编写器并使其final例如,还是需要是一个ThreadLocal?
关于编码器的类似问题:我应该记住前一个实例并将其传递getBinaryEncoder给重用,还是也需要一个ThreadLocal。
在每种情况下,如果答案是ThreadLocal,我还想知道这种优化是否值得复杂化:每次创建全新的编写器和/或编码器而不是重用它们实际上是否昂贵?
另外,我假设,无论我在这里得到什么答案,也适用于阅读/解码。那正确吗?
感谢任何指针。
谢谢!
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |