【发布时间】:2019-02-19 23:48:28
【问题描述】:
我想测试不同序列化方法的速度。因此我需要一堂课。出于我的目的,这个类必须只包含原始数据类型的成员,并且该类的每个对象的大小必须在 80Byte 左右。
我尝试了以下操作:
//Header = 16 Bytes
//long = 8 Byte
// => 80 Byte
public class TestClass implements Serializable {
private long a = new Random().nextLong();
private long b = new Random().nextLong();
private long c = new Random().nextLong();
private long d = new Random().nextLong();
private long e = new Random().nextLong();
private long f = new Random().nextLong();
private long g = new Random().nextLong();
private long h = new Random().nextLong();
}
所以我创建了对象:
for (int i = 0; i < 200000; i++) {
TestClass object = new TestClass();
//do something;
}
这里的问题如下。这每毫秒仅创建大约 846 个对象。 但我每毫秒最多需要 60,000 个对象。 有什么解决办法吗?
谢谢
【问题讨论】:
-
也许如果你没有为每个字段初始化创建一个新的 Random 对象...
-
当然。但是对象不是随机的。
-
是的。只需使用 one Random 对象来初始化所有对象的所有字段,而不是为每个字段创建一个 Random 对象。无论如何,序列化一个对象需要相同的时间,无论字段值是否是随机的。
-
这在我想测试不同序列化的速度时有效吗?我的意思是,实际上你只需要保存一个字段。
-
哦,好吧,我认为使用不同的方法会有所不同。
标签: java class object serialization random