由于原产物是Java序列化的绝佳选择,因此我们已经广泛使用了它。另外,我们已经使用Java构建器作为一般数据对象。在检查使用消息构建器构造对象的速度,形成实例参数和形成对象的正常Java原始词时,我们发现,对于包含6个原始字段的对象,使用构建器构造对象(这是对象的参数)花了1.1毫秒,而使用Java原始图仅花了0.3ms!以及其中50个领域的清单!建筑商是否将其用作通用数据对象会影响构建速度?
以下是我用于分析的样本设计,
message PersonList
{
repeated Person = 1;
message Person
{
optional string name = 1;
optional int32 age = 2;
optional string place = 3;
optional bool alive = 4;
optional string profession = 5;
}
}
The java equivalent
Class PersonList {
List<Person> personList;
Class Person {
String name;
int age;
String place;
boolean alive;
String profession;
}
/* getters and setters*/
}
我很难想象任何只包含" 6个原始值"的东西可能需要7ms才能构造。这可能是应占用的100,000倍。所以我不确定我知道你在做什么。
也就是说,由于多种原因,Protobuf建筑商确实比典型的Pojo更为复杂。例如,Protobuf对象跟踪当前设置了哪些字段。另外,重复的原语被装箱,与Java原始数组相比,它们效率低下。因此,如果您仅衡量施工时间,您可能会看到显着差异。但是,与应用程序代码的其余时间相比,这些效果通常是无关紧要的。