+set timedemo 1 +demo die.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 0 +set vm_game 0
4865 frames, 154.3 seconds: 31.5 fps

+set timedemo 1 +demo die.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 2 +set vm_game 2
4865 frames, 199.8 seconds: 24.4 fps

+set timedemo 1 +demo demo001.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 0 +set vm_game 0
1346 frames, 10.1 seconds: 133.0 fps

+set timedemo 1 +demo demo001.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 2 +set vm_game 2
1346 frames, 12.8 seconds: 105.4 fps

Starting point
4865 frames, 154.5 seconds: 31.5 fps
[seconds spent locally, % of parent, % of total, # of samples]
[133.623469 -- 60130560955, 100.00%, 100.00%, 4866] Root
        [126.853849 -- 57084231997, 94.93%, 94.93%, 4866] CL_Frame
                [125.895845 -- 56653130083, 99.24%, 94.22%, 4918] SCR_UpdateScreen
                        [50.532841 -- 22739778533, 40.14%, 37.82%, 524036] RB_SurfaceMesh
                                [46.583051 -- 20962372767, 92.18%, 34.86%, 524036] LerpMeshVertexes
                                        [8.465527 -- 3809487228, 18.17%, 6.34%, 455917] LerpMeshVertexes 1
                                        [37.967433 -- 17085344910, 81.50%, 28.41%, 68119] LerpMeshVertexes 2
                                [0.32% spent locally]
                        [7.82% spent locally]
                [59.86% spent locally]
        [0.76% spent locally]
[5.07% spent locally]

Minor cleanup of local variables
[seconds spent locally, % of parent, % of total, # of samples]
[133.121489 -- 59904670191, 100.00%, 100.00%, 4866] Root
        [126.329343 -- 56848204176, 94.90%, 94.90%, 4866] CL_Frame
                [125.402239 -- 56431007399, 99.27%, 94.20%, 4918] SCR_UpdateScreen
                        [50.013076 -- 22505884288, 39.88%, 37.57%, 524036] RB_SurfaceMesh
                                [46.085775 -- 20738598809, 92.15%, 34.62%, 524036] LerpMeshVertexes
                                        [8.427565 -- 3792404277, 18.29%, 6.33%, 455917] LerpMeshVertexes 1
                                        [37.517092 -- 16882691281, 81.41%, 28.18%, 68119] LerpMeshVertexes 2
                                [0.31% spent locally]
                        [7.85% spent locally]
                [60.12% spent locally]
        [0.73% spent locally]
[5.10% spent locally]

Split out normalization of LERPed normals (i.e., all the sqrt calls)
[seconds spent locally, % of parent, % of total, # of samples]
[133.110463 -- 59899708244, 100.00%, 100.00%, 4866] Root
        [126.357393 -- 56860826689, 94.93%, 94.93%, 4866] CL_Frame
                [125.364641 -- 56414088645, 99.21%, 94.18%, 4918] SCR_UpdateScreen
                        [49.854816 -- 22434667309, 39.77%, 37.45%, 524036] RB_SurfaceMesh
                                [45.981802 -- 20691810706, 92.23%, 34.54%, 524036] LerpMeshVertexes
                                        [8.407983 -- 3783592133, 18.29%, 6.32%, 455917] LerpMeshVertexes 1
                                        [37.432159 -- 16844471717, 81.41%, 28.12%, 68119] LerpMeshVertexes 2
                                                [30.288000 -- 13629599780, 80.91%, 22.75%, 68119] VectorArrayNormalize
                                        [19.09% spent locally]
                        [0.31% spent locally]
                        [7.77% spent locally]
                [60.23% spent locally]
        [0.79% spent locally]
[5.07% spent locally]

Rewrote VectorArrayNormalize to use PPC frsqrt instruction (with Newton-Rhapson refinement)
4865 frames, 128.7 seconds: 37.8 fps
[seconds spent locally, % of parent, % of total, # of samples]
[103.972710 -- 46787719721, 100.00%, 100.00%, 4866] Root
        [97.153160 -- 43718922078, 93.44%, 93.44%, 4866] CL_Frame
                [96.219348 -- 43298706398, 99.04%, 92.54%, 4918] SCR_UpdateScreen
                        [20.873944 -- 9393274747, 21.69%, 20.08%, 524036] RB_SurfaceMesh
                                [17.053245 -- 7673960266, 81.70%, 16.40%, 524036] LerpMeshVertexes
                                        [8.356579 -- 3760460537, 49.00%, 8.04%, 455917] LerpMeshVertexes 1
                                        [8.560159 -- 3852071404, 50.20%, 8.23%, 68119] LerpMeshVertexes 2
                                                [1.429376 -- 643219234, 16.70%, 1.37%, 68119] VectorArrayNormalize
                                        [83.30% spent locally]
                        [0.80% spent locally]
                        [18.30% spent locally]
                [78.31% spent locally]
        [0.96% spent locally]
[6.56% spent locally]