Announcement

Collapse
No announcement yet.

Performance thoughts

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Performance thoughts

    This is probably one for Actinic but if anyone has any thoughts they would be appreciated.
    Having got very (very) bored waiting ages for Actinic to upload/create snapshots I thought I would have a play and see if I could find out exactly what it was that was causing it to do a go slow. So, here’s what I found:-

    First of all I am running a Dell Laptop, Dual Core, 1.83ghz with 2gb RAM with around 1600 products in the shop (section per product). Databases compacted from within Actinic and Access.


    Most pages have various block statements to control formatting etc and there are a fair few PHP routines controlling various other bit and bobs too. The most obvious area I could think of that might be slowing things down was the Actinic generated navigation. So, as a test I removed this completely with the following results:-


    Page generation time with Actinic Navigation – 15 minutes (only tested up to and not including the final page checking)
    Page generation time without Actinic Navigation – 4 Minutes (again only tested up to and not including final page checking)
    Snapshot time with Actinic Navigation – 18 minutes
    Snapshot time without Actinic Navigation – 4 minutes


    I also tried removing various other blocks/PHP stuff and found it made little or no difference to upload/snapshot times. The times without the navigation are almost exactly the same as it took with V7.

    So, I guess the first question is is there a problem with the code I am using? (see below)

    If there is not is there any way to improve the performance of this part of the generation?

    And, more curiously, why would it take almost 5 times longer to do a snapshot with the navigation in place when presumably all Actinic is doing is gathering up files etc?

    Code:
    <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%27Section%27%20AND%20%3cactinic%3avariable%20name%3d%22PageTitle%22%20%2f%3e%20%21%3d%20%27Sports%20Warehouse%20Home%27" ><actinic:block type="EntireSectionList"><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aSectionNumber%22%20%2f%3e" ><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%201" ><h2><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Outdoor%20Equipment%27">class="outdoorheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Sports%20Equipment%27" >class="sportsheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Printing%20%26%20Embroidery%27">class="uniformheaderlink" </actinic:block>><actinic:variable name='SectionName'/></a></h2></actinic:block><actinic:block 22="" 3d="" 3e="" 2f="" 3cactinic="" 22sectionlevel="" 3avariable="" 20name="" 202h3="" if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%202" 20="" ><h3><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22DEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aDEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e" >class="activelink" </actinic:block>><actinic:block if="%3cactinic%3avariable%20name%3d%22DEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aDEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e" ><img src="arrowrightgreynav.gif" height="7" width="9" border="0" alt="" /></actinic:block><actinic:variable name='SectionName'/></a></h3></actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%21%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aSectionNumber%22%20%2f%3e" ><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%201" ><h2><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Outdoor%20Equipment%27">class="outdoorheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Sports%20Equipment%27" >class="sportsheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Printing%20%26%20Embroidery%27">class="uniformheaderlink" </actinic:block>><actinic:variable name='SectionName'/></a></h2></actinic:block></actinic:block></actinic:block></actinic:block>
    Let the head scratching begin!
    Cheers

    David
    Located in Edinburgh UK

    http://twitter.com/mcfinster

    #2
    Also I dropped a v7 database into a clean v8 site and this achieved excellent generation times
    Cheers

    David
    Located in Edinburgh UK

    http://twitter.com/mcfinster

    Comment


      #3
      This bit

      <actinic:block 22="" 3d="" 3e="" 2f="" 3cactinic="" 22sectionlevel="" 3avariable="" 20name="" 202h3=""

      looks weird to me.
      Norman - www.drillpine.biz
      Edinburgh, U K / Bitez, Turkey

      Comment


        #4
        Norman,

        It doesn't does it! However, all that is in that particular block is 'SectionLevel ==2' and it certainly works. However, if you hover over the block then it display the code as you see it.

        Screengrab attached
        Attached Files
        Cheers

        David
        Located in Edinburgh UK

        http://twitter.com/mcfinster

        Comment


          #5
          Right think I have fixed that by copying and pasting the correct code from another area. It does however make no difference to performance!

          Code:
          <actinic:block if="%3cactinic%3avariable%20name%3d%22PageType%22%20%2f%3e%20%3d%3d%20%27Section%27%20AND%20%3cactinic%3avariable%20name%3d%22PageTitle%22%20%2f%3e%20%21%3d%20%27Sports%20Warehouse%20Home%27" ><actinic:block type="EntireSectionList"><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aSectionNumber%22%20%2f%3e" ><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%201" ><h2><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Outdoor%20Equipment%27">class="outdoorheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Sports%20Equipment%27" >class="sportsheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Printing%20%26%20Embroidery%27">class="uniformheaderlink" </actinic:block>><actinic:variable name='SectionName'/></a></h2></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%202" ><h3><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22DEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aDEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e" >class="activelink" </actinic:block>><actinic:block if="%3cactinic%3avariable%20name%3d%22DEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e%20%3d%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aDEPARTMENT%5fTRACKER%5fIMAGE%22%20%2f%3e" ><img src="arrowrightgreynav.gif" height="7" width="9" border="0" alt="" /></actinic:block><actinic:variable name='SectionName'/></a></h3></actinic:block></actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%21%3d%20%3cactinic%3avariable%20name%3d%22MainSection%3a%3aSectionNumber%22%20%2f%3e" ><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionLevel%22%20%2f%3e%20%3d%3d%201" ><h2><a href="<actinic:variable name="SectionPageName"/>" title="<actinic:variable name="SectionName" />"<actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Outdoor%20Equipment%27">class="outdoorheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Sports%20Equipment%27" >class="sportsheaderlink" </actinic:block><actinic:block if="%3cactinic%3avariable%20name%3d%22SectionNumber%22%20%2f%3e%20%3d%3d%20%27Printing%20%26%20Embroidery%27">class="uniformheaderlink" </actinic:block>><actinic:variable name='SectionName'/></a></h2></actinic:block></actinic:block></actinic:block></actinic:block>
          Cheers

          David
          Located in Edinburgh UK

          http://twitter.com/mcfinster

          Comment


            #6
            essentially, actinic is taking data from an access database, processing it in memory, and then writing it to disk, followed by an upload to an ftp.

            i'v also been trying to sped up the v8 generation. and with little sucess.

            i tried to use the 1 out of the 2gig ram in my system as a drive with ram disk software/drivers. installing actinic to this 'ram' folder and then 'building' the catalog to ram, instead of the disc, before uploading. a performance increase was only observed in the disc write portion of the build. the processing of the data from the database can be sped up with tweaks to the database portion of the build process.

            the upload portion can be sped up with some faster internet connectivity.

            experimentally, i built a local server, that esentially pretended to be the external server. actinic uploaded to this over my lan at 100mbps. the server then took its time to upload the data to the web. like a sort of buffer. this, of course is flawed in many ways. in partucular, the peculiarities with getting actinic to believe that my local server was actually the webserver with full dns. i tricked actinic of course with a modification to the 'HOSTS' file in windows.

            the effect of this was a faster build, and a fast upload (to the buffer computer). but its all rather shaky and i dont recommend anyone to waste their time and hair on it. lol.

            i think perhaps it might be possible for actinic itself to have some cache/buffer feature like this. with 'background uploading'. or perhaps the building of the catalog occuring in real time inside actinic, so that no 'build' before upload is required, or at least minimal building. this is obviously a major rewrite of actinic, and i dont expect this sort of functionality.

            i'd love some information on exactly how actinic uses the access database, what methods it uses, so i can perhaps figure out a little more how to squeeze some more speed out of it.

            Comment


              #7
              Gabriel,

              Agreee 100%.

              Although I find Actinic to be very speedy without the Actinic generated menu routine. Now I do appreciate that it is a complicated routine to work through and there is going to be a performance hit if you choose to run Actinic generated menus but surely it is no greater than all the other blocks/PHP stuff put together. As I said, these make very little difference to the speed of Actinic. It seems to be (for me anyway) that this itself is causing the major slowdown.

              Also, I can't for the life of me work out why this would slow down the snapshot!
              Cheers

              David
              Located in Edinburgh UK

              http://twitter.com/mcfinster

              Comment


                #8
                really, the slowdown is in actinic generating code more frequently.

                for instance, if you ahve marketing enabled, and the templates appear in your products/catalog, then actinic generates it and uploads more files. if you disable all marketing, then upload, edit one thing, then upload again, you'll find the behaviour similar to v7. uploading and building just a small number of files.

                enable marketing or any autogenerated content and it takes an age.

                i'd set marketing to generate manually. i'd try to do it at the end of the day, and then upload the results. you'll save yourself a little time on autogenerated content. but only a little.

                Comment


                  #9
                  it would be good to get an improvement in build times, I now have to do all my design work using actinic default products as to do a preview using client products would waste several hours every day.

                  Comment


                    #10
                    Gabriel,

                    uploading and building just a small number of files.
                    The uploading part is fine though, it's the actual generation time where I know performance can be improved greatly just by removing this code.

                    enable marketing or any autogenerated content and it takes an age
                    I have to say I find very little difference in page generation time when i have marketing turned on (and I have both top sellers and also boughts running). But at the moment it takes as long to generate the pages as it does to upload them because of the navigation.

                    Having tried removing almost all my custom stuff the only thing that makes any real difference to page generation time (not actually uploading) is removing the navigation.
                    Cheers

                    David
                    Located in Edinburgh UK

                    http://twitter.com/mcfinster

                    Comment


                      #11
                      Originally posted by pinbrook
                      it would be good to get an improvement in build times, I now have to do all my design work using actinic default products as to do a preview using client products would waste several hours every day.
                      This was my thinking. We only run sites for ourselves so, in all honesty, this is a pain but we can live with it. For someone designing, having to wait 30mins for every snapshot and another 30mins just to generate and see what the finished changes looks like, must waste vast quantities of your days!
                      Cheers

                      David
                      Located in Edinburgh UK

                      http://twitter.com/mcfinster

                      Comment


                        #12
                        so, we're in agreement then. we need to build a time distortion machine, to create a bubble of 'ubertime' around our computers while we use actinic.

                        Comment


                          #13
                          removing the navigation.
                          i got around this by
                          - enabling includes on htm/html files.
                          - create a new fragment page. and in it a totally blank layout.
                          - put the navigation in this blank page
                          - strip the navigation from all pages.
                          - include your fragment using server side includes.

                          the upshot?

                          actinic builds the navigation once.

                          your server includes it on every page.

                          Comment


                            #14
                            Gabriel,

                            Could be wrong here but will that not only work if you have the same navigation on every page. We have 3 different menus dependent on the section and it also highlights the current top level section dependent on what page you are on (which will also add to generation time no doubt )
                            Cheers

                            David
                            Located in Edinburgh UK

                            http://twitter.com/mcfinster

                            Comment


                              #15
                              spot on. its a hack, no more, lol.

                              however i just thought that you could probably get the same effect by conditionally using css to manipulate the final output. and the highlighting.
                              Last edited by gabrielcrowe; 06-Mar-2007, 01:37 PM. Reason: idea

                              Comment

                              Working...
                              X