POV-Ray : Newsgroups : povray.macintosh : new (slow) G4s vs. G3s : new (slow) G4s vs. G3s Server Time
3 Jul 2024 04:25:56 EDT (-0400)
  new (slow) G4s vs. G3s  
From: Jerry
Date: 27 Sep 1999 16:22:29
Message: <jerry-2709991322290001@cerebus.acusd.edu>
Since I haven't seen anyone else posting, I thought I'd post my own
completely non-rigorous observations. I just replaced my rev.1 266 MHz G3
with a 400 MHz (slow motherboard) G4.

Notes: The first number is the parse time, the second trace time, and the
third the total time. Parse+Trace=Total.

This was a 640x480 image, anti-aliased, 40 kb file buffer, and RAM
requirements set at 20437. The image consists of about 4000 spheres
graphing the Lorenz equation.

                                 Rev.1 266 G3   Rev.2 300 G3   Slow 400 G4
EXTENSIONS ON
Unofficial Compile                 9+163=172      8+ 43= 51     6+ 31= 37
Official Compile Normal Cache     23+172=195     20+154=174    16+118=134
Official Compile Largest Cache    24+177=201     20+151=171    16+118=134
EXTENSIONS OFF
Unofficial Compile                12+161=173     12+ 42= 54     7+ 31= 38
Official Compile Normal Cache     23+172=195     19+148=167    14+111=125
Official Compile Largest Cache    23+174=197     20+146=166    14+110=124



Observations: 

a) the unofficial compile is a lot faster than I thought it was in my home
configuration.

b) I hate this keyboard.

c) extensions on or off don't seem to make much difference--even though
extensions on also means VM on.

d) I hate this keyboard.

e) I keep meaning to write a graphing macro for POV :*)

f) The difference in parsing time *may* be because of the slowness of the
official compile in writing the vista buffers to the display. (The
unofficial may be writing them off-display; it certainly appears
instantaneous)

g) There doesn't seem to be much of any difference between the official
and unofficial compiles on the Rev.1 machine--at least, compared to the
big differences on the Rev.2 and G4!

h) the speed increase on the G4 vs. the Rev.2 machine appears to be
hovering right around 1/3 faster--which is just what you might expect from
the 400 MHz chip vs. a 300 MHz chip?

i) the mouse sucks, too.

===
#include "colors.inc"
#include "skies.inc"

camera {
   perspective 
   location < 0.0, 0.5, -25 >
   look_at < 0.5, 2, 1 >
}
light_source {
   < 10.0, 100, -100 >
   color rgb < 1.000000, 1.000000, 1.000000 > 
}
light_source {
   <20,100,10>
   color White
}
background  {
   color rgb < 1, 1, 1 > 
}

#declare wantCyl = 0;
#declare wantSweep = 1;
#declare wantObj = 2;
#declare theObj = sphere {<0,0,0>,.3}
#declare pointCount = 4000;
#declare pointDT = .01;
union {
/*sphere_sweep {
   linear_sphere_sweep
   pointCount+1
*/ //lorenz(<0,1,0>,4000,.06,.01,Blue,Green)
   lorenz(<0,1,0>,pointCount,theObj,pointDT,wantObj,Red,Green)
   pigment { color Green }
   rotate <0,-45,0>
   translate <10,0,0>
}

plane {
   y,-10
   pigment {
      color Blue
   }
   normal {
      ripples 3
      scale .2
      turbulence .2
   }
}

sky_sphere {
   S_Cloud2
   rotate <3,0,0>
}

#macro
lorenz(initialValues,iterationCount,lineRadius,dt,theType,startColor,endColor)
   /* Type 0: connected cylinders
      Type 1: linear sphere sweep
   */
   #local old_x = initialValues.x;
   #local old_y = initialValues.y;
   #local old_z = initialValues.z;

   #local colorDelta = color rgb <endColor.red-startColor.red,
      endColor.green-startColor.green,
      (endColor.blue)-startColor.blue>
   #declare colorDelta = colorDelta/iterationCount;
   
   #local dt2 = dt/2;
   #local i = 0;
   #switch (theType)
      #case (1)
         <old_x,old_y,old_z>,lineRadius
         #break
      #case (2)
         object { lineRadius
            translate <old_x,old_y,old_z>
            #if ((colorDelta.red != 0) | (colorDelta.green != 0) |
(colorDelta.blue != 0))
               pigment {
                  color startColor
               }
            #end
         }
         #break
   #end
   #while (i < iterationCount)
      #declare currentColor = startColor + colorDelta*i;
      #local d0_x = 10*(old_y-old_x)*dt2;
      #local d0_y = (-old_x*old_z + 28*old_x = old_y)*dt2;
      #local d0_z = (old_x*old_y - 8*old_z/3)*dt2;
      #local xt = old_x + d0_x;
      #local yt = old_y + d0_y;
      #local zt = old_z + d0_z;
      #local d1_x = (10*(yt-xt))*dt2;
      #local d1_y = (-xt*zt + 28*xt - yt)*dt2;
      #local d1_z = (xt*yt - 8*zt/3)*dt2;
      #local xt = old_x + d1_x;
      #local yt = old_y + d1_y;
      #local zt = old_z + d1_z;
      #local d2_x = (10*(yt-xt))*dt;
      #local d2_y = (-xt*zt + 28*xt - yt)*dt;
      #local d2_z = (xt*yt - 8*zt/3)*dt;
      #local xt = old_x + d2_x;
      #local yt = old_y + d2_y;
      #local zt = old_z + d2_z;
      #local d3_x = (10*(yt - xt))*dt2;
      #local d3_y = (-xt*zt + 28*xt - yt)*dt2;
      #local d3_z = (xt*yt - 8*zt/3)*dt2;
      #local new_x = old_x + (d0_x + d1_x + d1_x + d2_x + d3_x)/3;
      #local new_y = old_y + (d0_y + d1_y + d1_y + d2_y + d3_y)/3;
      #local new_z = old_z + (d0_z + d1_z + d1_z + d2_z + d3_z)/3;
      
      #switch (theType)
         #case (0)
            cylinder {
               <old_x,old_y,old_z>,<new_x,new_y,new_z>,lineRadius
               #if ((colorDelta.red != 0) | (colorDelta.green != 0) |
(colorDelta.blue != 0))
                  pigment {
                     color currentColor
                  }
               #end
            }
            #break
         #case (1)
            <new_x,new_y,new_z>,lineRadius
            #break
         #case (2)
            object { lineRadius
               translate <new_x,new_y,new_z>
               #if ((colorDelta.red != 0) | (colorDelta.green != 0) |
(colorDelta.blue != 0))
                  pigment {
                     color currentColor
                  }
               #end
            }
            #break
      #end
      #declare i = i + 1;
      #declare old_x = new_x;
      #declare old_y = new_y;
      #declare old_z = new_z;
   #end
#end


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.