DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20719>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20719 BeanPropertyDescriptor cpu consuming on large arrays Summary: BeanPropertyDescriptor cpu consuming on large arrays Product: Axis Version: 1.1rc2 Platform: All OS/Version: All Status: NEW Severity: Blocker Priority: Other Component: Serialization/Deserialization AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] We were faced to a BIG performance problem using Document encoding. We have a xsl definition like the following: <xsd:complexType name="PointIdList"> <xsd:sequence> <xsd:element name="id" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> We generated code using wsdl2java, and use it in our interface implementation BUT we were faced to a big performance problem. There are a lot of "ids" in our requests (9500+) ... After investigation with a profiler, we determined that the PointIdList.setId(int idx, String value) method was called million times.... after having reduced data to 10 elements, it was 56 times ... 1+2+3+4+...+10 ... hmmmmmmm A little new Exception().printStackTrace() into the setId(..,..) method showed that it was the BeanPropertyDescriptor.growArrayToSize(Object obj, Class componentType, int i) method that was calling this method way too much. here's the problem: each time a new element is added to the PointIdList object, the array must be resized. The growArrayToSize(...) method does it by creating a new Array with the old size +1, and then copying data from old array to the new in a loop using the set(Object, int, Object) method ... It is way too much cpu consuming , and I think a bad idea (the PointIdList object does not want to know its array is resized, it only want to know a new element is added)
