<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>OK Tobias,</p>
    <p>I have a first cut of a caching mechanism for a mods.d/ folder
      coded up and pushed to trunk.  I have attempted to remove the
      cache when the folder is changed (= new module is installed or
      removed), but I possibly have forgotten something.  Give it a go
      and let me know if it improves things for you on your slower
      devices and we'll go from there.</p>
    <p>Troy</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 11/3/22 12:05, Tobias Klein wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:add71ec2-f3be-0cc8-4214-54841c00c6de@tklein.info">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>Thank you, Troy!</p>
      <p>I'd be glad to test any changes you come up with!<br>
        <br>
        Best regards,<br>
        Tobias<br>
      </p>
      <div class="moz-cite-prefix">On 11/3/22 5:57 PM, Troy A. Griffitts
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:a01a002c-daf4-731d-74f2-dd9afd82db93@crosswire.org">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        <p>Dear Tobias,</p>
        <p>I can have a look at optimizing getModuleStatus.  I can
          certainly see that only checking locally installed modules
          might be a speed improvement, but I suspect most of the time
          is loading all the .conf files for each module, and that is
          done when constructing the SWMgr (remote and local).  SWORD
          previously worked with a single modules.conf file where the
          section was appended each time a module was loaded.  It still
          will work in this manner.  I might try dumping all the .conf
          files into a single cache.conf file and using that for reading
          the info of a remote repository-- which can include thousands
          of individual .conf files.  We can see if that speeds up this
          operation.<br>
        </p>
        <div class="moz-cite-prefix">On 10/30/22 08:49, Tobias Klein
          wrote:<br>
        </div>
        <blockquote type="cite"
          cite="mid:E1opAZH-0004TO-7W@smtprelay06.ispgateway.de">
          <meta http-equiv="Content-Type" content="text/html;
            charset=UTF-8">
          <meta name="Generator" content="Microsoft Word 15 (filtered
            medium)">
          <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}span.pl-k
        {mso-style-name:pl-k;}.MsoChpDefault
        {mso-style-type:export-only;}div.WordSection1
        {page:WordSection1;}</style>
          <div class="WordSection1">
            <p class="MsoNormal"><span lang="EN-US">Hi Troy,<o:p></o:p></span></p>
            <p class="MsoNormal"><o:p> </o:p></p>
            <p class="MsoNormal">When integrating the module update
              functionality in Ezra Bible App, I noticed a performance
              issue in the function <span
style="font-size:9.0pt;font-family:Consolas;color:#D2A8FF;background:#0D1117">InstallMgr::getModuleStatus</span>.</p>
            <p class="MsoNormal"><o:p> </o:p></p>
            <p class="MsoNormal">On my laptop, it takes almost two
              seconds to run this against all repositories from the
              master repo list. On my slower surface tablet, it takes
              even longer and I haven’t tested it on my even slower
              Android devices, yet. This generates a bit of an issue in
              my JavaScript based application (longer interrupts of the
              JavaScript event loop lead to some freezing in the UI).</p>
            <p class="MsoNormal"><o:p> </o:p></p>
            <p class="MsoNormal">Considering the parameters <span
                class="pl-k"><span
style="font-size:9.0pt;font-family:Consolas;color:white;background:#0D1117">const</span></span><span
style="font-size:9.0pt;font-family:Consolas;color:#C9D1D9;background:#0D1117">
                SWMgr &base, </span><span class="pl-k"><span
style="font-size:9.0pt;font-family:Consolas;color:white;background:#0D1117">const</span></span><span
style="font-size:9.0pt;font-family:Consolas;color:#C9D1D9;background:#0D1117">
                SWMgr &other</span>, I saw that the function loops
              through all modules within <span
style="font-size:9.0pt;font-family:Consolas;color:#C9D1D9;background:#0D1117">other</span>.
              If one just wants to see which local modules are outdated,
              it would be enough to go through the ones that are also
              present within <span
style="font-size:9.0pt;font-family:Consolas;color:#C9D1D9;background:#0D1117">base</span>,
              right? Could that be a way of optimizing the performance?<br>
              <br>
              Best regards,<br>
              Tobias</p>
          </div>
          <br>
          <fieldset class="moz-mime-attachment-header"></fieldset>
          <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:sword-devel@crosswire.org" moz-do-not-send="true">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://crosswire.org/mailman/listinfo/sword-devel" moz-do-not-send="true">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page
</pre>
        </blockquote>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:sword-devel@crosswire.org" moz-do-not-send="true">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://crosswire.org/mailman/listinfo/sword-devel" moz-do-not-send="true">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page
</pre>
      </blockquote>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated" href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://crosswire.org/mailman/listinfo/sword-devel">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page
</pre>
    </blockquote>
  </body>
</html>