SVPerformance.tioga Solidviews Performance Benchmarks Created, March 30, 1987. A set of routines to try to test Solidviews performance. Eventually, these routines should include scripts, like Gargoyle scripts. Gravity Performance March 31, 1987, Bier, QueenFish SVGravityImpl.RayAtPoints = 436 (95.4%). SVAssemblyImpl.ClosestSegmentToLine = 360 (78.8%) SVLines3dImpl.FillEdgeTransform = 62 (13.6%) SVLines3dImpl.DistanceAndPointLineToEdge = 101 (33.9%). CoordSysImpl.FindInTermsOfWorld = 33 (7.2%). SVAssemblyImpl.ClosestPointToLine = 70 (15.3%). SVLines3dImpl.FillLineFromPoints (3 refs) = 19, 79 (4.2%) (21.4%). Summary: Culling will get rid of lots of this time. Computing the FindInTermsOfWorld and FillLineFromPoints values ahead of time will get up to 28%. 1) Load RRBlocks.pic. Lines Preferred. Resest Statistics. Select 250. Click Test Gravity. Print Statistics. March 30, 1987, Bier, QueenFish RayMap (PreferPoints). starts: 250. total: 14390. avg: 57. min: 46. max: 479, index: 146, overflows: 0 RayMap (PreferLines). starts: 250. total: 112904. avg: 451. min: 395. max: 772, index: 235, overflows: 0 March 30, 1987 11:39:56 pm PST, Bier, QueenFish. Using Jules's DropPerpendicular formula. RayMap (PreferLines). starts: 250. total: 48801. avg: 195. min: 170. max: 420, index: 211, overflows: 0 March 30, 1987 11:58:31 pm PST, Bier, QueenFish. Collapsing some SVLine3d routines. RayMap (PreferLines). starts: 250. total: 41018. avg: 164. min: 144. max: 393, index: 97, overflows: 0 April 20, 1987, Bier, QueenFish RayMap (PreferLines). starts: 250. total: 36189. avg: 144. min: 128. max: 383, index: 53 April 20, 1987, Bier, QueenFish. Using BoundBox culling for BlockClosestSegmentToLine. Over a factor of 5 improvement. RayMap. starts: 250. total: 7174. avg: 28. min: 7. max: 458, index: 192 2) Load TenBlocks.pic. Points Preferred. Resest Statistics. Move the mouse around on the cubes. Print Statistics. Use DuringSkitter. April 20, 1987, Bier, Queenfish StartSkitter. starts: 1. total: 142. avg: 142. DuringSkitter. starts: 24. total: 3326. avg: 138. min: 111. max: 156, index: 17 Ray Tracing Performance 1) Get GardenBoxCache.pic. Reset stats. Move the skitter. Record the preprocess time. April 21, 1987 12:14:29 pm PDT, Bier, QueenFish (computing boxes from BoundHedra). PreprocessForInteraction. starts: 1. total: 183. April 21, 1987 12:11:08 pm PDT, Bier, QueenFish (precomputed boxes). PreprocessForInteraction. starts: 1. total: 24. Selection Performance Note: the lion's share (85.4%) of the selection time is for gravity. Most of that time (83.3%) is for BlockClosestPointToLine. (22.9%) is FindInTermsOfWorld. (40.6%) is DistancePointToLine. FindInTermsOfWorld should be eliminated. Bounding box culling should be done. On the fly calculations should follow. 1) Load GardenWall.pic. Select the lower left block. Extend to two of its neighbors. Record DuringExtendSelection time. April 15, 1987, Bier, QueenFish DuringExtendSelection. starts: 2. total: 1117. avg: 558. min: 549. max: 567, index: 2 RayMap. starts: 4. total: 2060. avg: 515. min: 335. max: 1047, index: 1 Refresh Performance Comments: For benchmark 2 SVAssemblyImpl.DoDrawBuffer (50.9%) SVGraphicsImpl.DrawAreaNormalAbsolute (47.7%) 10% of the refresh time is for computing lighting. 7% for the CameraPolygon (plus garbage collection). 20% is for ImagerImpl.DrawObject. SVRefreshImpl.DrawObjectsFilteredAux (26.6%) SVTransformsImpl.TellAboutCameraAndWorld (13.1%) SVAssemblyImpl.PutAssemblyOnQueue (11.7) 10% for AverageDepthInCamera. About 10% is garbage collection time. A factor of 2 should be easy, by caching coordinate systems by not allocating so many polygons on the fly, and by computing polygon centroids ahead of time. 1) Load TenBlocksCache.pic. Reset Statistics. Refresh! Record PaintEntireScene. April 21, 1987 0:37:44 am PDT, Bier, QueenFish (without caching, drawing fill only) PaintEntireScene. starts: 1. total: 739. April 21, 1987 0:37:16 am PDT, Bier, QueenFish (with caching, drawing lines and fill) PaintEntireScene. starts: 1. total: 684. 2) Load GardenBoxCache.pic. Reset Statistics. Refresh! Record PaintEntireScene. April 21, 1987 0:45:15 am PDT, Bier, QueenFish (without caching, drawing fill only) PaintEntireScene. starts: 1. total: 6753. April 21, 1987 0:46:37 am PDT, Bier, QueenFish (with caching, drawing lines and fill) PaintEntireScene. starts: 1. total: 6808. April 21, 1987 11:21:36 am PDT, Bier, QueenFish (without caching, after reducing allocations). PaintEntireScene. starts: 1. total: 6394. April 21, 1987 11:22:05 am PDT, Bier, QueenFish (with caching, after reducing allocations and getting rid of lighting calculations) PaintEntireScene. starts: 1. total: 5601. Add Twig Performance November 6, 1987 (24797) SVMouseEventImplA.DragTheSkitter = 86 (7.9%). (24998) SVMouseEventImplA.AddNewTwigSlice = 41 (3.8%). (25574) SVMouseEventImplA.DuringDrag = 950 (87.7%) SVMouseEventImplA.DuringDrag (1 ref) = 0, 950 (87.7%). ! (18376) SVMouseEventImplA.DragTheSkitter = 86 (7.9%). ! (18674) SVWindowImpl.RestoreScreenAndInvariants = 863 (79.7%) ImagerStateImpl.StateDoSave (1 ref) = 0, 884 (81.6%). (2547) ViewerPaintImpl.saveAction = 742 (68.5%). (2547) BufferedRefreshImpl.TransferBits = 18 (1.7%). (2547) BufferedRefreshImpl.DirectToContext = 78 (7.2%) BufferedRefreshImpl.DrawSandwich (1 ref) = 0, 718 (66.3%) SVRefreshImpl.RefreshForeground (1 ref) = 0, 711 (65.7%) SVAlignImpl.DrawAlignBagRegardless = 711 (65.7%) BufferedRefreshImpl.DirectToContext (1 ref) = 1, 77 (7.2%). (3932) SVRefreshImpl.RefreshSkitterPlane = 73 (6.7%). SVRefreshImpl.RefreshSkitterPlane (1 ref) = 0, 73 (6.7%). (10673) SVRefreshImpl.DrawSkitter = 23 (2.1%). (10673) SVRefreshImpl.DrawAnchor = 50 (4.6%) 1) Play Octahedron.script. Record time for StartAdd and EndBlock. November 6, 1987, Bier, QueenFish StartAdd. starts: 12. total: 14773. avg: 1231. min: 309. max: 2066, index: 6 StartAdd. starts: 12. total: 4311. avg: 359. min: 201. max: 888, index: 5 Playback took (00:00:19) After getting rid of Foreground refresh and doing only 1 DragTheSkitter. November 8, 1987, Bier, QueenFish EndBlock. starts: 12. total: 3599. avg: 299. min: 186. max: 982, index: 2 StartAdd. starts: 12. total: 3760. avg: 313. min: 201. max: 815, index: 8