On Sun, Oct 06, 2024 at 12:09:47PM +0100, Gavin Smith wrote:
> On Sun, Oct 06, 2024 at 09:53:22AM +0200, Patrice Dumas wrote:
> > > How much slower would the linear search actually be?
> > 
> > It is much slower (if I recall well, it was something like 100 times
> > slower for the texi2any manual).  I juste tested the overall effect and
> > for the pure C demonstrator for the Texinfo manual, time is about 0.375
> > s with linear search and 0.305 with the hash map.
> 
> That is a 20% decrease which is significant, but is only 0.07 sec
> absolute difference in run time.
> 
> Does it scale with the size of the input?  Perhaps a certain part of
> this 0.07 sec is fixed regardless of the size of the input file.  Have
> you tried it with a larger manual like glibc or elisp?

I've tried it myself although have been unable to run it on anything
but texinfo.texi for the manuals I tried.

I did not see anything in teximakehtml.c about which converter was used
so I patched the code in converter_converter in converter/converter.c
which passed the CONVF_cxx_hashmap or CONVF_string_list argument to
new_converter.  (Is the "string list" implementation really used by
default by texi2any as it doesn't look that way from the code?)

  /* NOTE if HAVE_CXX_HASHMAP is not set, even with CONVF_cxx_hashmap
     string lists will be used */
  size_t converter_descriptor = new_converter (format, CONVF_cxx_hashmap);
   /*
   To use a string list.  Slower.
  size_t converter_descriptor = new_converter (format, CONVF_string_list);
    */

Times are in seconds.

manual          C++ hash                string list
texinfo         0.39                    0.45

libc.texi - unable to run test due to numerous error messages that
don't occur with texi2any:

$ time ../../../../tp/texi2any.pl --html  ../../../../../libc/libc.texinfo

real    0m11.077s
user    0m10.586s
sys     0m0.396s
0$ time TEXINFO_XS_CONVERT=1 ../../../../tp/texi2any.pl --html  
../../../../../libc/libc.texinfo

real    0m2.417s
user    0m2.116s
sys     0m0.300s
$ time ../teximakehtml ../../../../../libc/libc.texinfo
charset.texi:2074: unknown command `cal'
charset.texi:2074: unknown command `cal'
charset.texi:2075: unknown command `cal'
charset.texi:2075: unknown command `cal'
charset.texi:2076: unknown command `cal'
charset.texi:2076: unknown command `cal'
charset.texi:2081: unknown command `cal'
charset.texi:2081: unknown command `cal'
charset.texi:2084: unknown command `cal'
charset.texi:2084: unknown command `cal'
charset.texi:2094: unknown command `cal'
charset.texi:2098: unknown command `cal'
charset.texi:2098: unknown command `cal'
charset.texi:2105: unknown command `cal'
charset.texi:2105: unknown command `cal'
charset.texi:2109: unknown command `cal'
charset.texi:2118: unknown command `cal'
charset.texi:2119: unknown command `cal'
charset.texi:2161: unknown command `cal'
charset.texi:2161: unknown command `cal'
charset.texi:2162: unknown command `cal'
charset.texi:2162: unknown command `cal'
charset.texi:2163: unknown command `cal'
charset.texi:2163: unknown command `cal'
socket.texi:3384: unknown command `hfuzz'
math.texi:568: unknown command `infty' (possibly involving @infinity)
math.texi:569: unknown command `infty' (possibly involving @infinity)
math.texi:1231: unknown command `infty' (possibly involving @infinity)
math.texi:1249: unknown command `infty' (possibly involving @infinity)
math.texi:1267: unknown command `infty' (possibly involving @infinity)
math.texi:1281: unknown command `cdot' (possibly involving @mul)
...

elisp.texi - also unable to run test.  See output below:

0$ time ../../../../tp/texi2any.pl --html  
../../../../../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    0m10.437s
user    0m10.124s
sys     0m0.304s
0$ time TEXINFO_XS_CONVERT=1 ../../../../tp/texi2any.pl --html  
../../../../../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    0m2.399s
user    0m2.138s
sys     0m0.260s
0$ time ../teximakehtml  ../../../../../emacs-lispref-27.2/elisp.texi 
intro.texi:37: warning: undefined flag: VERSION
functions.texi:2390: warning: @inforef is obsolete
files.texi:3244: unknown command `discretionary'
files.texi:3244: misplaced {
files.texi:3244: misplaced {
files.texi:3244: misplaced }
files.texi:3244: misplaced {
files.texi:3244: misplaced }
files.texi:3244: misplaced }
files.texi:3250: unknown command `discretionary'
files.texi:3250: misplaced {
files.texi:3250: misplaced {
files.texi:3250: misplaced }
files.texi:3250: misplaced {
files.texi:3250: misplaced }
files.texi:3250: misplaced }
files.texi:3253: unknown command `discretionary'
files.texi:3253: misplaced {
...

There are also error messages about locales and collation:

$ ../teximakehtml ../../../../doc/texinfo.texi
BUG: no Perl collation
texi2any: warning: collation locale not found: en_US



Reply via email to