On Fri, Jan 2, 2015 at 11:19 PM, Lucas Theisen <[email protected]> wrote:
> I was thinking about optimizing Oid... The Oid class represents OID > values. There is a relatively small finite set of OID values. I was > thinking we could get rid of the constructors and use factory methods > instead. One for getting an Oid by String and one by byte[]. I would then > remove the setters, do the conversion to byte[]/String at construction > time, store both values, and change getOid to return a copy of the byte[] > to make it immutable. Then, the first time an Oid is requested, it would > be constructed, and every following request would get the same object. > This would make comparisons faster and remove conversion time altogether > (other than the first request). > > The main problem of doing this is that the current methods/constructors > are public so there is no telling if anybody is using them other than us. > Also, they would all remain in memory (though given the relatively small > number and their small size it should be relatively negligible). > > My current reason for wanting to do this is i need to check all extended > requests to see if they are startTLS > you mean if the request issues by client is a StartTLS request or not? where do you intend to intercept these requests? > requests. In order to do that, I have to wrap the connection and > intercept the exteneded function and check the oid. In the case where an > OID object is supplied i need to verify it so I have to either construct an > OID and use equals, or toString the oid and do a string compare. Both > would have cost. > > This is almost certainly a premature optimization, but sometimes you just > feel like doing things as efficiently as you can think... > > What do you think? > -- Kiran Ayyagari http://keydap.com
