So now a "template db" is constructed at first run (build ejbdoclet) The next build ejbdoclet takes 7 sec (instead of 29 !!) when nothing has changed. You need to delete manually the template db in cases when you add or remove merge files (not when you update one) which are very rare and most of the time you will run -Dxdoclet.force=true which don't look this db. Anytime a generation is done, the DB is updated with (possible) new merge files. As you quoted the most tricky part here is that doing a generation we missed some merge files because a "for" loop is not run or because of "if" is not run... Which let me think I should provide another parsing mechanism that only "grep" for <XdtMerge:merge> and take its decision based on this. That will simply make the checking fast as the speed and will destroy my file DB AND your trick as well. We will only need a in memory db because it will run very fast. I really want to take some more time on these issues because now javadoc speed has disappeared we should kill this "mouton a trois pattes" (sheep with 3 legs) and have something completely transparent for the users. For example looking at class hierarchy is not enough I think in special cases like VO relationships,... Regards Vincent
> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED]] On Behalf > Of Vincent Harcq > Sent: samedi 30 mars 2002 10:47 > To: 'Ara Abrahamian'; [EMAIL PROTECTED] > Subject: RE: [Xdoclet-devel] [RT] Persisting parsed data? > > > > > The isGenerationNeeded( File file, URL templateURL ) > takes a lot of > > > time. Because of parsing. > > > Can we not keep a javamake style database of merge files > for a basic > > > template file. > > > > Are you checking merge files only? > > Yes when looping the merge files... > > > Or classes too? Say > > ejb-jar.xml, merge files are evaluated; are classes > > timestamp-checked too? I think not, but should be possible > > too, in setCurrentClass()/pushClass the loop pointer is > > moved, do a timestamp check on clazz there :o) > > ... Then I checks ALL classes (most of the time for xml files > there is a forAllClasses so ... This part is really quick. > And we do not need to see if other classes than the tagged > classes. At least while we are not mutate these classes. It > will be for later. And we don't need to check non tagged classes. > > The first is really killing perf. > Build ejbdoclet ==> 29 sec > Build ejbdoclet -Dxdoclet.force ==> 58 sec > > The 29 sec should be 1 or 2 sec. All the time is passed in > the merge files timestamp lookup. I will try what I proposed > to see... I'll come back with numbers... Then I 'll try yours > and we'll see... > > > > > And you should anyway parse the template and run parts of the > > template. We might have a merge inside a forAllClasses loop, > > which merges blabla-{0}.xml for example, and > > {0}=currentClass. My trick will do it > > ;-) > > > > > > PS: Anyone care to implement it? I'm not yet in a good > condition. > > > > The trick is: define an int runMode in XJavaDoc, set to > true when > > > > Vincent's code is to be run, reset when finished. In > > > > xjavadoc.ProxyClass, change everywgere resolve() is > > called to first > > > > check this flag and don't resolve if > > > > runMode==TIMESTAMP_PREPROCESSING_MODE. Note that to make > > templates > > > > actually finish you have to return a semi-meaningful > > result for each > > > > of the ProxyClass methods (public XMethod[] methods(){ if( > > > > runMode==time... ) return NULL_METHODS;}. And so on. > > > > > > Let me know what you think of my idea...I can take this if > > you don't > > > like it ;) > > > > I like it but I'm not in a good shape atm ;-) > > > > Ara. > > > > > > _________________________________________________________ > > Do You Yahoo!? > > Get your free @yahoo.com address at http://mail.yahoo.com > > > > > > _______________________________________________ > > Xdoclet-devel mailing list [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel > > > > > _______________________________________________ > Xdoclet-devel mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel > _______________________________________________ Xdoclet-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/xdoclet-devel
