Description
An ObjectId is 12 bytes long, but our current implementation:
private int _timestamp;
|
private int _machine;
|
private short _pid;
|
private int _increment;
|
means that 14 bytes are used. (two fields, _machine and _increment, are 1 byte larger than they need to be).
We could instead represent the 12 bytes internally as:
private int _a;
|
private int _b;
|
private int _c;
|
Which is exactly 12 bytes.
We could easily reimplement the Timestamp, MachineId, Pid and Increment properties to extract the necessary bytes from _a, _b and _c and synthesize the corresponding return value, so this would not be a backward breaking change.