<html><body>
<p><tt>&gt;&gt;&gt;The cost of all inn-memory manipulation is trivial compared to the cost of input and output (including parsing and serialization)&lt;&lt;&lt;</tt><br>
<tt>The tests I sent to Jason this week end show that SAXBuilder is about 25% faster with the uncheckedFactory. The bigger the document is, the higher the gain is (up to 40% for a middle sized document).</tt><br>
<tt>For our own purposes, building an HTML DOM is ~300% faster with the factory (4 times faster!). Obviously, these numbers justify the use of the factory, especially when serving HTML pages on a web server.</tt><br>
<br>
<tt>&gt;&gt;&gt;There's simply no point to optimizing the speed of object creation and manipulation&lt;&lt;&lt;</tt><br>
<tt>Well, the numbers above contradict this assertion.</tt><br>
<br>
<tt>&gt;&gt;&gt;It's certainly not worth doing at the cost of correctness&lt;&lt;</tt><br>
<tt>The code which uses this facility should effectively ensure the correctness by itself. For example, when you're deserializing an XMLS stream you encoded yourself, you're sure of the document validity and do not need any validation overhead.</tt><br>
<tt>Also, with the factory pattern, a user cannot use it by mistake. He has to create an instance and call its methods, instead of simply accessing Element &amp; Attribute objects. He cannot </tt><tt>inadvertently select such an unchecked method while inspecting Element object with code completion facility of his IDE.</tt><br>
<br>
<tt>About making it private, I'm sure it can be used by other builders, beyond SAXBuilder. XMLS builder is an example, but why not a pull parser builder or other kind of builders? A factory should be public, and accessible by external code.</tt><br>
<br>
<tt>Phil.</tt><br>
</body></html>