Forgot to mention (Re: Help with profiling some code?)
Joshua 'Schwa' Gargus
schwa at cc.gatech.edu
Thu May 15 20:56:23 UTC 2003
The base images are the same (Croquet update 364), and the B3DRotation
classes are identical.
Joshua
On Thu, May 15, 2003 at 04:47:56PM -0400, Joshua 'Schwa' Gargus wrote:
> Hi,
>
> I'm having a weird performance discrepancy between code in two
> different images. The code is not the same, but the the part that is
> causing the performance hotspot should be. Here are message tallies
> of the weird parts:
>
> | 43.1% {1162ms} Transform>>transformTransform:
> | 29.3% {790ms} B3DRotation>>*
> | |9.0% {243ms} B3DVector3>>cross:
> | | |3.0% {81ms} B3DVector3>>z
> | | |2.4% {65ms} B3DVector3>>x
> | |8.4% {226ms} B3DRotation class>>a:b:c:d:
> | | |7.2% {194ms} B3DRotation>>a:b:c:d:
> | | | 6.0% {162ms} B3DRotation>>normalize
> | | | 2.4% {65ms} B3DRotation>>b
> | |5.4% {146ms} B3DRotation>>bcd
> | | |3.0% {81ms} B3DVector3 class>>x:y:z:
> | |4.2% {113ms} B3DRotation>>a
> | 12.6% {340ms} Transform>>transformVector:
> | 6.0% {162ms} B3DRotation>>asMatrix4x4
> | 3.6% {97ms} B3DMatrix4x4>>localDirToGlobal:
> | 2.4% {65ms} B3DVector3(FloatArray)>>*=
>
> (and the other one)
>
> | 65.8% {4223ms} Transform>>transformTransform:
> | 35.4% {2272ms} B3DRotation>>*
> | |13.6% {873ms} B3DVector3>>cross:
> | | |4.3% {276ms} B3DVector3 class>>x:y:z:
> | | | |2.9% {186ms} primitives
> | | |4.1% {263ms} B3DVector3>>z
> | | |3.5% {225ms} B3DVector3>>x
> | |11.3% {725ms} B3DRotation class>>a:b:c:d:
> | | |10.4% {667ms} B3DRotation>>a:b:c:d:
> | | | 9.6% {616ms} B3DRotation>>normalize
> | | | 2.6% {167ms} Float(Number)>>squared
> | |3.5% {225ms} B3DRotation>>bcd
> | | 2.9% {186ms} B3DVector3 class>>x:y:z:
> | 27.0% {1733ms} Transform>>transformVector:
> | |14.8% {950ms} B3DRotation>>asMatrix4x4
> | | |4.6% {295ms} B3DRotation>>matrixClass
> | | |2.3% {148ms} B3DMatrix4x4>>a11:
> | |11.0% {706ms} B3DMatrix4x4>>localDirToGlobal:
> | | 2.6% {167ms} B3DMatrix4x4>>a31
> | | 2.3% {148ms} B3DVector3 class>>x:y:z:
> | 2.6% {167ms} Transform>>translation:
>
> The method Transform>>tranformTransform: is a double dispatch that
> you needn't concern yourself with. The code for the method is the
> same in both images. Notice that even though #* is called on
> B3DRotation the same number of times (I verified this), it takes
> more than twice as long to run in the second image.
>
> I decided to try to exercise just that method with the following code:
>
> | b1 b2 |
> b1 := B3DRotation axis: (1 at 4@3) normalized angle: 56.
> b2 := B3DRotation axis: (2 at 5@7) normalized angle: 22.222.
> [30000 timesRepeat: [b1 * b2 * b1 * b2]] timeToRun
>
> I ran the snippet a bunch of times in both images, and they both
> took roughly the same time.
>
> I tried garbage-collecting, and restarting each image. Neither
> made any difference. Does anyone have any hints about how to
> approach this?
>
>
> Thanks,
> Joshua
More information about the Squeak-dev
mailing list
|