<div dir="ltr"><div>Hi Norbert,</div><div><br></div><div>From my limited testing the fastest option is the last one in your list - linking to libkpathsea from a custom executable in a low-level programming language of choice.</div><div><br></div><div>That was the reason for the (still experimental) rust-kpathsea wrapper getting created:</div><div></div><div><a href="https://github.com/dginev/rust-kpathsea">https://github.com/dginev/rust-kpathsea</a></div><div><br></div><div>Speed is not always the deciding factor of course. </div><div><br></div><div>Btw, there is a gotcha for your first approach that people should be aware of: while found names get paths returned, missing names are simply elided. Which means more work to figure out which returned path corresponds to which input. </div><div><br></div><div>For example these calls produce identical results:<br></div><div><br></div><div>$ kpsewhich foo.sty pgf.sty bar.sty tikz.sty baz.sty</div><div>$ kpsewhich pgf.sty foo.sty bar.sty baz.sty tikz.sty</div><div>$ kpsewhich foo.sty pgf.sty tikz.sty bar.sty  baz.sty</div><div><br></div><div>Greetings,</div><div>Deyan</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 2, 2024 at 6:16 AM Jonathan Fine <<a href="mailto:jfine2358@gmail.com">jfine2358@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Hi Norbert<div dir="auto"><br></div><div dir="auto">Here's something that might help, depending on the numbers. On a high speed device, eg NVMe, populate a copy of the file system, except all files are empty.</div><div dir="auto"><br></div><div dir="auto">With kind regards </div><div dir="auto">Jonathan </div></div>
</blockquote></div>