On Sun, Nov 05, 2023 at 11:59:11AM +0100, Patrice Dumas wrote: > On Sat, Nov 04, 2023 at 04:06:05PM +0000, Gavin Smith wrote: > > > At that point, using a new env variable to use perl for > > > structuring/transformations would be very easy based on your patch. > > > If you give a name, I can do it. > > > > Would TEXINFO_XS_STRUCTURE be ok? > > Should be done in > https://git.savannah.gnu.org/cgit/texinfo.git/commit/?id=403894ff57d87dd86411f15105404197f3183d34 > > I timed > ./texi2any.pl ../doc/texinfo.texi > > with 7.1, nothing set in the environment, TEXINFO_XS_STRUCTURE set and > TEXINFO_XS_CONVERT set (which should be very similar to nothing set in > the environment for info output, except that some modules are not > loaded). I find that 7.1 is about 2% slower and the others are > undistinguishable.
Thanks for adding the variable. Although master was faster than 7.1, it should have been even faster, because of the other slowdown. Now that the recent change with documentlanguage has been reverted, I'm happy that we're finally back to having no more significant slowdown (for XS execution). With the new XS modules enabled, it is actually faster now than 7.1 was. The effect depends on the manual in question. If it uses @def* commands a lot this can make a big difference. I regularly check the glibc manual and the elisp manual as these are among the largest commonly used Texinfo manuals. texinfo.texi is a relatively small manual. (I'm open to suggestions of other manuals worth checking for performance, too.) Here's a typical comparison: master: $ time ../tp/texi2any.pl ../../libc/libc.texinfo creature.texi:309: warning: `.' or `,' must follow @xref, not f real 0m5.931s user 0m5.699s sys 0m0.225s 7.1: $ time texi2any ../../libc/libc.texinfo creature.texi:309: warning: `.' or `,' must follow @xref, not f real 0m5.978s user 0m5.755s sys 0m0.220s master: $ time ../tp/texi2any.pl ../../emacs-lispref-27.2/elisp.texi functions.texi:2390: warning: @inforef is obsolete errors.texi:226: warning: unexpected argument on @ignore line: The following seem to be unused now. real 0m5.416s user 0m5.189s sys 0m0.220s 7.1: $ time texi2any ../../emacs-lispref-27.2/elisp.texi functions.texi:2390: warning: @inforef is obsolete errors.texi:226: warning: unexpected argument on @ignore line: The following seem to be unused now. real 0m5.471s user 0m5.269s sys 0m0.200s