GGPerformance.tioga Created by Bier on June 20, 1986 12:24:35 pm PDT Dated Benchmarks. All times in milli-seconds. Note: Many of the benchmarks below require that bringover /ivy/bier/top/GargoylePic.df has been performed. Note: to do performance testing: Turn off color display Open to full left column with control panel on top (except where noted otherwise) Turn off Spy; clear all Spy breakpoints Garbage collector to 512000 GC interval Close WatchTool or other screen active viewers Undo Performance 1) Rollback. WatchTool closed. Minimal checkpoint. Color display off. FastPlayback BigScripts.script. 1873254 bytes 14-Aug-88 18:52:48 PDT. Record total time. August 28, 1988 9 pm PDT. Pier. Independence. History size 2. Finished FastPlayback of ///7.0/Gargoyle/BigScripts.script in time (00:12:49) August 29, 1988 9:39:36 am PDT. Pier. Independence. History completely off. _ GGHistoryImpl.noHistory _ TRUE Finished FastPlayback of ///7.0/Gargoyle/BigScripts.script in time (00:11:16) History Overhead: 1.137574 (~14%) August 30, 1988 10:57:36 am PDT Pier. Independence. History size 10000. Finished FastPlayback of ///7.0/Gargoyle/BigScripts.script in time (00:13:06) roughly equal to performance with HistorySize=2, because most scripts do Clears which quickly unlink history lists. GC interval 512,000. August 30, 1988 11:37:36 am. Pier. Independence. History size 2. Finished FastPlayback of ///7.0/Gargoyle/BigScripts.script in time (00:12:12) August 30, 1988 11:54:12 am. Pier. Independence. History completely off. _ GGHistoryImpl.noHistory _ TRUE Finished FastPlayback of ///7.0/Gargoyle/BigScripts.script in time (00:10:27) History Overhead: 1.167464 (~17%) 1) Rollback. WatchTool closed. Minimal checkpoint. Color display off. GC interval 512,000. FastPlayback PerverseHouse.script. 1159 bytes 30-Aug-88 16:57:04 PDT Record total time. Script forces about 22 full captures of 266 objects. Bad case. August 30, 1988 5:28:58 pm PDT. Pier. Independence. History size 2. Finished playback of ///7.0/Gargoyle/PerverseHouse.script in time (00:03:41) August 30, 1988 5:29:21 pm PDT. Pier. Independence. History completely off. _ GGHistoryImpl.noHistory _ TRUE Finished FastPlayback of ///7.0/Gargoyle/PerverseHouse.script in time (00:02:45) History Overhead: 1.339394 (~34%) UserInput Performance (obsolete) 1) Run MenuTest4.script. Record UserInput time. April 2, 1987, Bier, Independence UserInput (Playback). starts: 56. total: 10637. avg: 189. min: 0. max: 2676, index: 44 UserInput (Fastplay). starts: 58. total: 3693. avg: 63. min: 0. max: 996, index: 44 UserInput (Playback). starts: 55. total: 5988. avg: 108. min: 0. max: 1969, index: 44 April 2, 1987, Bier, Independence (using RefTab). UserInput (Playback). starts: 56. total: 10655. avg: 190. min: 0. max: 2567, index: 44 UserInput (Fastplay). starts: 58. total: 3805. avg: 65. min: 0. max: 1193, index: 44 April 2, 1987, Bier, Independence (measuring the RefTab call but not the queuing delay). UserInput. starts: 56. total: 6. avg: 0. min: 0. max: 0, index: 1 April 2, 1987, Pier, Independence (measuring the old giant SELECT statement but not the queuing delay). UserInput (Fastplay). starts: 58. total: 25. avg: 0. min: 0. max: 1, index: 6 UserInput. (Playback). starts: 55. total: 26. avg: 0. min: 0. max: 2, index: 8 Gravity Performance 1) Run ArcBench.script. Tests gravity speed for Arcs. Using Spline Path Code (arcbench.gargoyle): Map. started: 1001. total: 70494. avg: 70. min: 17. max: 514, index: 112, June 20, 1986, Bier Using Code Specially Designed for Arcs: Map. started: 1001. total: 30004. avg: 29. min: 18. max: 693, index: 171, June 20, 1986, Bier Caching BoundBoxes: Map. started: 1001. total: 9090. avg: 9. min: 3. max: 617, June 20, 1986, Bier Map. started: 1001. total: 7513. avg: 7. min: 4. max: 125, June 30, 1986, Bier on Langley Map. starts: 1001. total: 6317. avg: 6. min: 3. max: 52, September 30, 1986, Bier, Independence Multi-Gravity becomes the new standard, October 8, 1986, Bier, Kearsarge MultiMap. starts: 1001. total: 21313. avg: 21. min: 6. max: 644 UniMap. starts: 1001. total: 6607. avg: 6. min: 3. max: 498 After putting in some storage pools, October 8, 1986, Bier, Kearsarge: MultiMap. starts: 1001. total: 7068. avg: 7. min: 4. max: 64, index: 476 UniMap. starts: 1001. total: 6186. avg: 6. min: 3. max: 41, index: 634 With object-oriented Outlines, November 24, 1986, Bier, Independence: MultiMap. starts: 1030. total: 8974. avg: 8. min: 0. max: 165, index: 670 UniMap. starts: 1001. total: 7338. avg: 7. min: 3. max: 139, index: 423 In Cedar7.0. MultiMap. starts: 1001. total: 10638. avg: 10. min: 5. max: 629, index: 966 UniMap. starts: 1001. total: 8609. avg: 8. min: 4. max: 571, index: 482 Script time: 31 seconds. This result seems quite repeatable. March 3, 1987, Bier, QueenFish January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes MultiMap. starts: 1001. total: 16252. avg: 16. min: 10. max: 821, index: 440 February 18, 1988, Bier, QueenFish. After using dTol trick to speed up intersection testing. MultiMap. starts: 1001. total: 13825. avg: 13. min: 10. max: 23, index: 752 MultiMap. starts: 1001. total: 13693. avg: 13. min: 10. max: 27, index: 329 February 24, 1988, Bier, QueenFish. Faster Bound-Box tests and curve sorting. MultiMap. starts: 1001. total: 12180. avg: 12. min: 9. max: 19, index: 932 February 24, 1988, Bier, QueenFish. Bound box check for outlines and faster procedure calls. MultiMap. starts: 1001. total: 6610. avg: 6. min: 3. max: 14, index: 786 November 1, 1989, Bier, QueenFish. MultiMap. starts: 1001. total: 13465. avg: 13. min: 10. max: 34, index: 934 MultiMap. starts: 1001. total: 13435. avg: 13. min: 10. max: 22, index: 1 November 22, 1989, Bier, Pippin, NoOpt MultiMap. starts: 1001. total: 7389. avg: 7. min: 4. max: 39 November 22, 1989, Pier, Pierrot, Opt MultiMap. starts: 1001. total: 6015. avg: 6. min: 4. max: 62 MultiMap. starts: 1001. total: 5818. avg: 5. min: 3. max: 54 April 16, 1990, Bier, Pippin. Nitro. MultiMap. n: 1001. total: 5736. avg: 5. range: [4..53], worst: 52 MultiMap. n: 1001. total: 5285. avg: 5. range: [3..55], worst: 3 September 7, 1990, Pier. Pierrot. Imager and FP recompiled with "f" switch MultiMap. n: 1001. total: 4724. avg: 4. range: [2..44], worst: 280 MultiMap. n: 1001. total: 5046. avg: 5. range: [3..27], worst: 170 2) Run GravityTest1.script. Gravity in windowhacker. Using Spline Path Code: Map. started: 1001. total: 363847. avg: 363. min: 171. max: 1375, June 20, 1986, Bier Using Code Specially Designed for Arcs: Map. started: 1001. total: 260051. avg: 259. min: 172. max: 1083, June 20, 1986, Bier Caching BoundBoxes: Map. started: 1001. total: 65513. avg: 65. min: 11. max: 733, June 20, 1986, Bier Map. started: 1001. total: 71334. avg: 71. min: 41. max: 248, June 30, 1986, Bier, Langley Map. starts: 1001. total: 42324. avg: 42. min: 14. max: 230, September 30, 1986, Bier, Independence Multi Gravity (with n = 5) October 1, 1986, Bier, Independence: MultiMap. started: 1001. total: 61565. avg: 61. min: 11. max: 952, June 20, 1986, Bier MultiMap. started: 1001. total: 70668. avg: 70. min: 40. max: 280, June 30, 1986, Bier, Langley MultiMap. starts: 1001. total: 40567. avg: 40. min: 12. max: 726. Multi-Gravity becomes standard, October 8, 1986, Bier, Kearsarge MultiMap. starts: 1001. total: 47091. avg: 47. min: 15. max: 245, index: 39 UniMap. starts: 1001. total: 43681. avg: 43. min: 14. max: 227, index: 39 Object-oriented outlines. Why is this slower?, November 24, 1986, Bier, Independence Tested 1001 total points. 910 unihits. 910 multihits. 173 differences MultiMap. starts: 1001. total: 56854. avg: 56. min: 12. max: 261, index: 676 UniMap. starts: 1001. total: 53148. avg: 53. min: 11. max: 528, index: 434 Cedar7.0. March 3, 1987, Bier, QueenFish. Tested 1001 total points. 869 unihits. 869 multihits. 205 differences MultiMap. starts: 1001. total: 57672. avg: 57. min: 19. max: 780, index: 651 UniMap. starts: 1001. total: 54543. avg: 54. min: 16. max: 757, index: 336 April 7, 1987, Bier, QueenFish MultiMap. starts: 1001. total: 61366. avg: 61. min: 19. max: 806, index: 995 UniMap. starts: 1001. total: 57250. avg: 57. min: 16. max: 730, index: 918 August 10, 1987, Bier, QueenFish. Using vector subtraction to compute curve normals. Unfortunately, about 32% of the time for gravity now goes into performing this subtraction. MultiMap. starts: 1001. total: 84167. avg: 84. min: 22. max: 916, index: 97 UniMap. starts: 1001. total: 48065. avg: 48. min: 18. max: 922, index: 315 January 13, 1988, Pier, Independence. Object-oriented trajectories and slices caching bound boxes. MultiMap. starts: 1001. total: 79049. avg: 78. min: 35. max: 846, index: 648, overflows: 0 February 18, 1988, Bier, QueenFish. With dTol intersection pruning. Still allocates 10,000 words per second. MultiMap. starts: 1001. total: 74627. avg: 74. min: 34. max: 1860, index: 366 MultiMap. starts: 1001. total: 72938. avg: 72. min: 40. max: 300, index: 514 February 24, 1988, Bier, QueenFish. Faster boundbox and curve sort. MultiMap. starts: 1001. total: 53881. avg: 53. min: 30. max: 235, index: 923 MultiMap. starts: 500. total: 26915. avg: 53. min: 30. max: 112, index: 130 February 24, 1988, Bier, QueenFish. Bounding box tests for Outlines and faster procedure calls. MultiMap. starts: 1001. total: 37274. avg: 37. min: 14. max: 121, index: 495 November 1, 1989, Bier, QueenFish. MultiMap. starts: 1001. total: 35293. avg: 35. min: 18. max: 129, index: 1 MultiMap. starts: 1001. total: 35416. avg: 35. min: 18. max: 126, index: 1 November 22, 1989, Pier, Pierrot, opt. Script changed to MergeShapes windowhacker MultiMap. starts: 1001. total: 21648. avg: 21. min: 7. max: 773, index: 856 MultiMap. starts: 1001. total: 22499. avg: 22. min: 7. max: 2196, index: 949 April 16, 1990, Bier, Pippin MultiMap. n: 1001. total: 13309. avg: 13. range: [7..57], worst: 66 April 17, 1990, Bier, Pippin MultiMap. n: 1001. total: 13348. avg: 13. range: [7..69], worst: 1 July 25, 1990, Bier, Pippin MultiMap. n: 1001. total: 13563. avg: 13. range: [5..136], worst: 1 July 24, 1990, Bier, Lightspeed MultiMap. n: 1001. total: 5329. avg: 5. range: [2..31], worst: 325 3) Playback TrajAlignTest.script. Gravity with lots of alignments. January 5, 1987, Bier, Queenfish. With precomputed alignment intersections, on-the-fly traj intersections. MultiMap. starts: 1001. total: 33395. avg: 33. min: 20. max: 236, index: 685 UniMap. starts: 1001. total: 24142. avg: 24. min: 19. max: 103, index: 327 MultiMap. starts: 1001. total: 28726. avg: 28. min: 15. max: 198, index: 918 UniMap. starts: 1001. total: 27859. avg: 27. min: 19. max: 207, index: 690 March 3, 1987, Bier, Queenfish. Cedar7.0. With all intersections computed on-the-fly. MultiMap. starts: 1001. total: 14480. avg: 14. min: 5. max: 169, index: 854 UniMap. starts: 1001. total: 10333. avg: 10. min: 4. max: 146, index: 267 April 27, 1987, Bier, Queenfish. Perhaps the MultiMap speed-up is due to computing midpoints on the fly. MultiMap. starts: 1001. total: 11903. avg: 11. min: 4. max: 442, index: 565 UniMap. starts: 1001. total: 7312. avg: 7. min: 3. max: 134, index: 558 April 27, 1987, Bier, Queenfish. Using Nearest neighbors Merge. UniMap should be unaffected. MultiMap should be a little faster. Clearly, the difference is not significant. MultiMap. starts: 1001. total: 11536. avg: 11. min: 4. max: 215, index: 531 UniMap. starts: 1001. total: 6877. avg: 6. min: 3. max: 125, index: 4 August 10, 1987, Bier, Queenfish. Routine test. MultiMap. starts: 1001. total: 13316. avg: 13. min: 5. max: 948, index: 316 UniMap. starts: 1001. total: 8526. avg: 8. min: 3. max: 1089, index: 101 MultiMap. starts: 1001. total: 13196. avg: 13. min: 4. max: 1008, index: 134 UniMap. starts: 1001. total: 8195. avg: 8. min: 3. max: 857, index: 341 August 11, 1987, Eisenman, HMSAjax. New normal computation. MultiMap. starts: 1001. total: 14839. avg: 14. min: 4. max: 899, index: 165 UniMap. starts: 1001. total: 7407. avg: 7. min: 3. max: 24, index: 940 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes MultiMap. starts: 1001. total: 11934. avg: 11. min: 6. max: 768, index: 703 February 18, 1988, Bier, QueenFish. dTol intersection pruning. MultiMap. starts: 1001. total: 11563. avg: 11. min: 6. max: 48, index: 216 February 24, 1988, Bier, QueenFish. MultiMap. starts: 1001. total: 9708. avg: 9. min: 5. max: 48, index: 853 MultiMap. starts: 1001. total: 9564. avg: 9. min: 5. max: 45, index: 853 November 1, 1989, Bier, QueenFish MultiMap. starts: 1001. total: 12640. avg: 12. min: 8. max: 46, index: 929 MultiMap. starts: 1001. total: 12546. avg: 12. min: 8. max: 46, index: 929 November 22, 1989, Pier, Pierrot, Opt. MultiMap. starts: 1001. total: 5491. avg: 5. min: 3. max: 58, index: 400 MultiMap. starts: 1001. total: 5527. avg: 5. min: 3. max: 43, index: 1 April 17, 1990, Bier, Pippin. MultiMap. n: 1001. total: 5058. avg: 5. range: [3..54], worst: 780 July 25, 1990, Bier, Pippin MultiMap. n: 1001. total: 4996. avg: 4. range: [2..80], worst: 823 July 24, 1990, Bier, Lightspeed MultiMap. n: 1001. total: 2096. avg: 2. range: [1..40], worst: 859 4) Playback BezierHitTest.script. Record the CurveClosestPoint line in the Typescript. Tests gravity with various Bezier splines. December 2, 1986, Bier CurveClosestPoint. starts: 46. total: 25588. avg: 556. min: 242. max: 950, index: 20, December 2, 1986, Bier CurveClosestPoint. starts: 41. total: 23282. avg: 567. min: 245. max: 1148, index: 38 -- this test is not very repeatable because of Queue optimization. CurveClosestPoint. starts: 41. total: 2385. avg: 58. min: 7. max: 374, index: 29 -- using root-finding instead of sub-division. December 2, 1986, Bier CurveClosestPoint. starts: 41. total: 1671. avg: 40. min: 6. max: 151, index: 1. -- finding only the roots in [0..1], December 29, 1986, Bier CurveClosestPoint. starts: 41. total: 994. avg: 24. min: 6. max: 97, index: 23 -- finding only the roots in [0..1] for all derivatives of the polynomial. epsilon = tiny. It's even more stable. January 19, 1987, Bier, Queenfish CurveClosestPoint. starts: 41. total: 899. avg: 21. min: 2. max: 67, index: 17, March 3, 1987, Bier, Queenfish. Cedar7.0. CurveClosestPoint. starts: 41. total: 1143. avg: 27. min: 3. max: 174, index: 39 August 10, 1987, Bier, Queenfish. Routine test. CurveClosestPoint. starts: 41. total: 877. avg: 21. min: 2. max: 56, index: 25. January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes CurveClosestPoint. starts: 41. total: 881. avg: 21. min: 2. max: 66, index: 25 February 24, 1988, Bier, Queenfish. Faster bound box test and curve sort. CurveClosestPoint. starts: 41. total: 852. avg: 20. min: 2. max: 48, index: 25 November 1, 1989, Bier, Queenfish. CurveClosestPoint. starts: 33. total: 622. avg: 18. min: 2. max: 49, index: 17 CurveClosestPoint. starts: 33. total: 623. avg: 18. min: 2. max: 49, index: 17 April 17, 1990, Bier, Pippin CurveClosestPoint. n: 32. total: 500. avg: 15. range: [1..181], worst: 1 July 25, 1990, Bier, Pippin CurveClosestPoint. n: 31. total: 275. avg: 8. range: [1..38], worst: 1 July 24, 1990, Bier, Lightspeed CurveClosestPoint. n: 31. total: 100. avg: 3. range: [0..9], worst: 5 5) Playback NaturalHitTest.script. Record the CurveClosestPoint line in the Typescript. CurveClosestPoint. starts: 28. total: 17417. avg: 622. min: 183. max: 1060, index: 14 CurveClosestPoint. starts: 51. total: 3987. avg: 78. min: 1. max: 162, index: 33 -- using root-finding. Not very stable however. December 2, 1986? CurveClosestPoint. starts: 28. total: 2213. avg: 79. min: 18. max: 229, index: 10 -- using subdivision with tolerance = 1 pixel. At least it's stable. December 29, 1986. Bier, Queenfish. CurveClosestPoint. starts: 28. total: 2545. avg: 90. min: 18. max: 231, index: 18 -- using subdivision with tolerance = 1 pixel. January 19, 1987, Bier, Queenfish CurveClosestPoint. starts: 28. total: 972. avg: 34. min: 0. max: 222, index: 27 -- finding roots in [0..1] at all levels. Accurate and fast. Hurrah. CurveClosestPoint. starts: 28. total: 853. avg: 30. min: 0. max: 105, index: 28. March 3, 1987, Bier, Queenfish. Cedar7.0 CurveClosestPoint. starts: 28. total: 816. avg: 29. min: 0. max: 108, index: 14 August 10, 1987, Bier, Queenfish. Cedar7.0.5 CurveClosestPoint. starts: 27. total: 759. avg: 28. min: 1. max: 58, index: 26 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes CurveClosestPoint. starts: 27. total: 777. avg: 28. min: 0. max: 59, index: 16 February 18, 1988, Bier, QueenFish. dTol intersection pruning. CurveClosestPoint. starts: 41. total: 863. avg: 21. min: 2. max: 49, index: 25 November 1, 1989, Bier, QueenFish. CurveClosestPoint. starts: 27. total: 687. avg: 25. min: 0. max: 55, index: 27 CurveClosestPoint. starts: 24. total: 540. avg: 22. min: 0. max: 53, index: 23, April 17, 1990, Bier, Pippin CurveClosestPoint. n: 27. total: 325. avg: 12. range: [0..26], worst: 9 July 24, 1990, Bier, Lightspeed CurveClosestPoint. n: 27. total: 125. avg: 4. range: [0..11], worst: 3 September 7, 1990, Pier, Pierrot. Imager and FP recompiled with "f" switch. GCOff CurveClosestPoint. n: 24. total: 273. avg: 11. range: [0..34], worst: 5 CurveClosestPoint. n: 24. total: 203. avg: 8. range: [0..27], worst: 8 CurveClosestPoint. n: 27. total: 257. avg: 9. range: [0..21], worst: 9 6) Playback KnotchedGrid.script. Record both MultiMap times. Many lines and circles. Bier, December 30, 1986, Queenfish. Lines. MultiMap. starts: 6. total: 1749. avg: 291. min: 166. max: 430, index: 2 Circles. MultiMap. starts: 6. total: 667. avg: 111. min: 89. max: 165, index: 4 Bier, December 30, 1986, Queenfish. After postponing the SqRt function used to find the distance from intersection points to the testpoint. Lines. MultiMap. starts: 6. total: 1212. avg: 202. min: 134. max: 269, index: 2 Circles. MultiMap. starts: 6. total: 523. avg: 87. min: 59. max: 174, index: 4 Notes: Running Spy on the Lines example shows that 57.4% of the time is spent in ProcessPoint, 5.9% in FindIntersections, 7.2% is spent NARROWing shapes into AlignmentPoints. Lines. MultiMap. starts: 6. total: 1419. avg: 236. min: 118. max: 393, index: 4 Circles. MultiMap. starts: 6. total: 493. avg: 82. min: 59. max: 140, index: 4, January 5, 1987. Bier, Queenfish Performing all intersection calculations on the fly. January 5, 1987, Bier, QueenFish. 50.9% of this is for computing Circle-Circle intersections. This seems high. Lines. MultiMap. starts: 6. total: 1093. avg: 182. min: 86. max: 235, index: 3 Circles. MultiMap. starts: 6. total: 1018. avg: 169. min: 30. max: 625, index: 2 Twice as many intersections were being performed as necessary. These are the times after the fix. January 5, 1987, Bier, QueenFish. Lines. MultiMap. starts: 6. total: 427. avg: 71. min: 28. max: 198, index: 2 Circles. MultiMap. starts: 6. total: 882. avg: 147. min: 19. max: 587, index: 3 These times are not very repeatable. All of the measures were taken January 5, 1987, Bier, Queenfish. I suspect that the 147 measure for Circles was inflated by garbage collection. Lines. MultiMap. starts: 6. total: 590. avg: 98. min: 27. max: 188, index: 3 Circles. MultiMap. starts: 6. total: 326. avg: 54. min: 20. max: 127, index: 4 Lines. MultiMap. starts: 6. total: 502. avg: 83. min: 27. max: 144, index: 6 Circles. MultiMap. starts: 6. total: 315. avg: 52. min: 19. max: 122, index: 4 Lines. MultiMap. starts: 6. total: 590. avg: 98. min: 27. max: 189, index: 3 Circles. MultiMap. starts: 6. total: 265. avg: 44. min: 18. max: 72, index: 4 Using a more careful test for line parallelism. No noticeable change. January 5, 1987, Bier, Queenfish. Lines. MultiMap. starts: 6. total: 526. avg: 87. min: 28. max: 192, index: 2 Circles. MultiMap. starts: 6. total: 316. avg: 52. min: 18. max: 122, index: 4 Lines. MultiMap. starts: 6. total: 540. avg: 90. min: 28. max: 191, index: 2. Circles. MultiMap. starts: 6. total: 275. avg: 45. min: 18. max: 77, index: 4 Cedar7.0. March 3, 1987, Bier, Queenfish Lines. starts: 6. total: 514. avg: 85. min: 29. max: 185, index: 3 Circles. starts: 6. total: 413. avg: 68. min: 19. max: 135, index: 4. April 27, 1987, Bier, Queenfish. Using old merge. 5 point overflows. Lines. MultiMap. starts: 6. total: 477. avg: 79. min: 30. max: 197, index: 2 Circles. MultiMap. starts: 6. total: 385. avg: 64. min: 22. max: 153, index: 4 Lines. MultiMap. starts: 6. total: 492. avg: 82. min: 30. max: 195, index: 2 Circles. MultiMap. starts: 6. total: 388. avg: 64. min: 19. max: 137, index: 4 April 27, 1987, Bier, Queenfish. Using nearest neighbors merge. No overflows. Lines. MultiMap. starts: 6. total: 576. avg: 96. min: 46. max: 188, index: 2 Circles. MultiMap. starts: 6. total: 465. avg: 77. min: 20. max: 188, index: 3 Lines. MultiMap. starts: 6. total: 489. avg: 81. min: 30. max: 188, index: 2 Circles. MultiMap. starts: 6. total: 473. avg: 78. min: 20. max: 187, index: 2 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes Bogus differences or great improvement ?? Lines. MultiMap. starts: 6. total: 109. avg: 18. min: 10. max: 31, index: 4 Circles. MultiMap. starts: 6. total: 240. avg: 40. min: 7. max: 103, index: 6 January 29, 1988, Bier, QueenFish. I can't repeat your results, Ken. Lines. MultiMap. starts: 6. total: 372. avg: 62. min: 30. max: 116, index: 3 Circles. MultiMap. starts: 6. total: 301. avg: 50. min: 21. max: 74, index: 4 Lines. MultiMap. starts: 6. total: 478. avg: 79. min: 47. max: 135, index: 5 Circles. MultiMap. starts: 6. total: 312. avg: 52. min: 21. max: 75, index: 4 February 18, 1988, Bier, QueenFish. dTol intersection pruning. Lines. MultiMap. starts: 6. total: 92. avg: 15. min: 11. max: 19, index: 2 Circles. MultiMap. starts: 6. total: 99. avg: 16. min: 12. max: 19, index: 4 February 24, 1988, Bier, QueenFish. Faster bounding boxes and curve sorting. Lines. MultiMap. starts: 6. total: 69. avg: 11. min: 8. max: 14, index: 3 Circles. MultiMap. starts: 6. total: 86. avg: 14. min: 11. max: 16, index: 6. November 1, 1989, Bier, QueenFish. Lines. MultiMap. starts: 6. total: 86. avg: 14. min: 13. max: 15, index: 4 Circles. MultiMap. starts: 6. total: 98. avg: 16. min: 14. max: 18, index: 4 April 18, 1990, Bier, Pippin Lines. MultiMap. n: 6. total: 39. avg: 6. range: [5..8], worst: 2 Circles. MultiMap. n: 6. total: 41. avg: 6. range: [5..8], worst: 2 7) Play MidpointTest.script. Record MultiMap and UniMap times. Loads a picture of diagonal lines and runs TestGravity. Note: Celtics reports that only half of the GGTraj.NearestJoint calls are culled by the bounding box test. This is probably due to the long diagonal lines. Since OutlineClosestPoint accounts for 67.4% of the time, this case would be greatly helped by computing joints on the fly. April 7, 1987, Bier, QueenFish MultiMap. starts: 400. total: 47987. avg: 119. min: 37. max: 726, index: 343 UniMap. starts: 400. total: 55979. avg: 139. min: 57. max: 757, index: 19 MultiMap. starts: 400. total: 48321. avg: 120. min: 38. max: 768, index: 150 UniMap. starts: 400. total: 55899. avg: 139. min: 58. max: 779, index: 132 April 7, 1987, Bier, QueenFish. Computing midpoints ahead of time. (GGSequence.JointsInSequence no longer checks for Obsolete sequences). MultiMap. starts: 400. total: 43349. avg: 108. min: 47. max: 782, index: 100 UniMap. starts: 400. total: 47143. avg: 117. min: 54. max: 750, index: 176 April 7, 1987, Bier, QueenFish. Computing midpoints on the fly. GGSequence.JointsInSequence is still faster. MultiMap avg is about 20% faster. min is about 15% faster. MultiMap. starts: 400. total: 36473. avg: 91. min: 40. max: 366, index: 377 UniMap. starts: 400. total: 46957. avg: 117. min: 52. max: 533, index: 3 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes MultiMap. starts: 400. total: 45531. avg: 113. min: 41. max: 889, index: 90 February 18, 1988, Bier, QueenFish. dTol intersection pruning. MultiMap. starts: 400. total: 41795. avg: 104. min: 39. max: 148, index: 199 February 24, 1988, Bier, QueenFish. Faster bound boxes and curve sorting. MultiMap. starts: 400. total: 30339. avg: 75. min: 32. max: 115, index: 1 March 4, 1988, Bier, QueenFish. Faster procedure calls. MultiMap. starts: 400. total: 27739. avg: 69. min: 20. max: 113, index: 17 November 1, 1989, Bier, QueenFish. MultiMap. starts: 400. total: 30688. avg: 76. min: 20. max: 125, index: 1 MultiMap. starts: 400. total: 30497. avg: 76. min: 21. max: 127, index: 1 April 18, 1990, Bier, Pippin MultiMap. n: 400. total: 9390. avg: 23. range: [7..76], worst: 170 July 24, 1990, Bier, Lightspeed MultiMap. n: 400. total: 4534. avg: 11. range: [2..100], worst: 280 8) Play HorizontalBench.script. Record MultiMap and UniMap times. Loads a picture of horizontal lines and runs TestGravity. Sure enough, the bounding box test culls 9 out of 10 in this case. Spy reports that over 50% of the time is still spent in OutlineClosestPoint. The time for finding midpoints is small (about 1%). April 7, 1987, Bier, QueenFish MultiMap. starts: 400. total: 12609. avg: 31. min: 16. max: 157, index: 61 UniMap. starts: 400. total: 23218. avg: 58. min: 36. max: 228, index: 160 MultiMap. starts: 400. total: 12671. avg: 31. min: 16. max: 239, index: 119 UniMap. starts: 400. total: 22826. avg: 57. min: 36. max: 555, index: 54 April 7, 1987, Bier, QueenFish. Computing midpoints ahead of time. (GGSequence.JointsInSequence no longer checks for Obsolete sequences). MultiMap. starts: 400. total: 17205. avg: 43. min: 29. max: 172, index: 81 UniMap. starts: 400. total: 19012. avg: 47. min: 35. max: 171, index: 168 MultiMap. starts: 400. total: 17350. avg: 43. min: 30. max: 482, index: 9 UniMap. starts: 400. total: 19280. avg: 48. min: 35. max: 208, index: 106 Tested 400 total points. 400 unihits. 400 multihits. 0 differences. I've forgotten why MultiMap is faster in this case. April 7, 1987, Bier, QueenFish. Computing midpoints on the fly. GGSequence.JointsInSequence is still faster. Why the UniMap times differ is a mystery. I suspect it is because of the extra garbage collection due to the allocation of on-the-fly midpoints. The improvement to the MultiMap avg is about. 50%. The min improves by a factor of 2. MultiMap. starts: 400. total: 12172. avg: 30. min: 15. max: 531, index: 7 UniMap. starts: 400. total: 21720. avg: 54. min: 35. max: 225, index: 309 MultiMap. starts: 400. total: 11902. avg: 29. min: 15. max: 172, index: 375 UniMap. starts: 400. total: 22343. avg: 55. min: 35. max: 525, index: 4 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes MultiMap. starts: 400. total: 15032. avg: 37. min: 19. max: 805, index: 127 February 18, 1988, Bier, QueenFish. dTol intersection pruning. MultiMap. starts: 400. total: 13849. avg: 34. min: 19. max: 58, index: 53 February 24, 1988, Bier, QueenFish. Faster bounding boxes and curve sorting. MultiMap. starts: 400. total: 11818. avg: 29. min: 17. max: 54, index: 129 November 1, 1989, Bier, QueenFish. MultiMap. starts: 400. total: 10350. avg: 25. min: 14. max: 58, index: 1 MultiMap. starts: 400. total: 10238. avg: 25. min: 14. max: 57, index: 1 April 18, 1990, Bier, Pippin MultiMap. n: 400. total: 4210. avg: 10. range: [5..76], worst: 184 9) Control panel in separate column. Play DecimalGrid.script. Record MultiMap. February 19, 1988, Bier, QueenFish MultiMap. starts: 500. total: 18951. avg: 37. min: 32. max: 58, index: 196 February 24, 1988, Bier, QueenFish. Faster bounding boxes and curve sorting. MultiMap. starts: 500. total: 14849. avg: 29. min: 27. max: 49, index: 123 MultiMap. starts: 500. total: 14690. avg: 29. min: 26. max: 49, index: 196 February 24, 1988, Bier, QueenFish. More direct procedure calls. MultiMap. starts: 500. total: ?. avg: 21. min: 18. max: 42, index: ?. March 3, 1988, Bier, QueenFish. dTol pruning for curves. MultiMap. starts: 500. total: 9631. avg: 19. min: 16. max: 40, index: 196 November 1, 1989, Bier, QueenFish. MultiMap. starts: 500. total: 16237. avg: 32. min: 30. max: 47, index: 39 MultiMap. starts: 500. total: 16184. avg: 32. min: 30. max: 46, index: 39 April 18, 1990, Bier, Pippin MultiMap. n: 500. total: 6777. avg: 13. range: [11..62], worst: 327 10) Same as 9, but use PreferLines gravity. February 24, 1988, Bier, QueenFish MultiMap. starts: 500. total: 14532. avg: 29. min: 25. max: 49, index: 10 February 24, 1988, Bier, QueenFish. More direct procedure calls. MultiMap. starts: 500. total: ?. avg: 21. min: 17. max: 41, index: ? March 3, 1988, Bier, QueenFish. dTol pruning for curves. MultiMap. starts: 500. total: 8536. avg: 17. min: 14. max: 32, index: 196 11) Same as 9, but use t = 11.11111. (PreferPoints) February 24, 1988, Bier, QueenFish. More direct procedure calls. MultiMap. starts: 500. total: ?. avg: 185. min: 167. max: 220, index: ? March 3, 1988, Bier, QueenFish. MultiMap. starts: 500. total: 56502. avg: 113. min: 40. max: 171, index: 231 12) Same as 10, but use t = 11.11111. (PreferLines) February 24, 1988, Bier, QueenFish. More direct procedure calls. MultiMap. starts: 500. total: ?. avg: 212. min: 173. max: 237, index: ? March 3, 1988, Bier, QueenFish. MultiMap. starts: 500. total: 42256. avg: 84. min: 51. max: 115, index: 437 Text Performance June 20, 1986 5:08:11 pm PDT 1) Play teddy.script. AddChar. started: 23. total: 33782. avg: 1468. min: 1384. max: 2923, index: 1 AddChar. started: 23. total: 37100. avg: 1613. min: 1475. max: 2991, index: 1, June 30, 1986, Bier on Langley AddChar. started: 22. total: 4635. avg: 210. min: 144. max: 1287, index: 13, July 3, 1986, Bier, Langley AddChar. starts: 22. total: 1403. avg: 63. min: 53. max: 81, index: 21, October 1, 1986, Bier, Independence Cedar7.0. March 3, 1987, Bier, Queenfish AddChar. starts: 22. total: 1903. avg: 86. min: 79. max: 143, index: 21 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes AddChar. starts: 22. total: 2244. avg: 102. min: 87. max: 115, index: 22 November 1, 1989, Bier, Queenfish AddChar. starts: 22. total: 2293. avg: 104. min: 88. max: 211, index: 13 AddChar. starts: 22. total: 2032. avg: 92. min: 88. max: 96, index: 22 January 31, 1992, Bier, duet AddChar. n: 22. total: 613. avg: 27. range: [20..85], worst: 20 February 3, 1992, Bier, duet, unopt AddChar. n: 22. total: 642. avg: 29. range: [23..79], worst: 2 AddChar. n: 22. total: 1148. avg: 52. range: [22..197], worst: 10 2) Play TextBench1.script. Type "Now is the time for all" in an empty viewer. AddChar. started: 23. total: 1874. avg: 81. min: 68. max: 143, index: 1, June 30, 1986, Bier, Langley AddChar. started: 22. total: 1472. avg: 66. min: 56. max: 77, index: 21, July 3, 1986, Bier, Langley AddChar. starts: 22. total: 1389. avg: 63. min: 53. max: 72, index: 21, October 1, 1986, Bier, Independence AddChar. starts: 22. total: 2471. avg: 112. min: 106. max: 121, index: 21. Cedar7.0. March 3, 1987, Bier, Queenfish. Each AddChar is showing feedback that it doesn't have to. January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes AddChar. starts: 22. total: 2244. avg: 102. min: 87. max: 115, index: 22 November 1, 1989, Bier, Queenfish AddChar. starts: 22. total: 1982. avg: 90. min: 86. max: 94, index: 22 AddChar. starts: 22. total: 2052. avg: 93. min: 85. max: 134, index: 18 April 18, 1990, Bier, Pippin AddChar. n: 22. total: 7421. avg: 337. range: [291..433], worst: 1 May 29, 1990, Bier, Pippin. Using bounding box refresh culling for $ObjectAdded events AddChar. n: 22. total: 3413. avg: 155. range: [112..271], worst: 20 AddChar. n: 22. total: 3254. avg: 147. range: [113..205], worst: 13 July 24, 1990, Bier, Lightspeed AddChar. n: 22. total: 1937. avg: 88. range: [59..211], worst: 9 AddChar. n: 22. total: 1432. avg: 65. range: [55..75], worst: 22 February 3, 1992, Bier, duet, unoptimized (~half of this time is painting) AddChar. n: 22. total: 1172. avg: 53. range: [25..367], worst: 1 AddChar. n: 22. total: 1199. avg: 54. range: [22..226], worst: 16 3) Play CelticText.script (obsolete?). Record the time to do the SawText Finish. April 20, 1987 7:06:46 pm PDT, Bier, Queenfish SawTextFinish. starts: 5. total: 4445. avg: 889. min: 0. max: 2655, index: 5 April 20, 1987 7:07:04 pm PDT, Bier, Queenfish. After using UpdateForNewSlices to fix the bags instead of building them from scratch. SawTextFinish. starts: 5. total: 3. avg: 0. min: 0. max: 1, index: 2 Adding Performance (See also "Setting Up Gravity Bags") March 23, 1987, Bier, Queenfish. Notes from Spy: When running the BigG benchmark, Spy reports the following times for StartAdd: GGMouseEventImplA.StartMotion = 552 (26.6%) GGAlignImpl.StaticToDynamicBags = 438 (21.1%) GGAlignImpl.BuiltInFilters = 258 (12.4%) GGAlignImpl.PointFireRule (1 ref) = 12, 228 (11.6%) Lines2dImpl.CreateEmptyLine = 172 (8.3%) GGMouseEventImplA.DuringDrag = 1435 (69.2%) GGWindowImpl.RestoreScreenAndInvariants = 1337 (64.5%) GGShapesImpl.DoDrawLine = 899 (43.4%) GGRefreshImpl.DrawDragOverlayAux = 232 (11.2%). In summary, by building the alignment bag incrementally, we could get another 20%. By building the foreground plane incrementally, we could get another 40%. March 24, 1987, Bier, Queenfish. Notes from Spy: Sure enough, by using FunctionCache to reduce foreground plane costs, I got about 37% performance improvement. Here's what Spy says now: GGMouseEventImplA.ContinueMotion = 118 (35.0%) GGAlignImpl.StaticToDynamicBags = 72 (21.4%) GGAlignImpl.StaticToDynamicSceneBag = 33 (9.8%) GGOutlineImplA.OutlineMovingParts = 26 (7.7%) GGRefreshImpl.UpdateForegroundForMotion = 30 (8.9%) GGMouseEventImplA.DuringDrag = 179 (53.1%) GGWindowImpl.RestoreScreenAndInvariants = 145 (43.0%) ViewerPaintImpl.PaintViewer = 151 (44.8%) ImagerImpl.DoSaveAll = 149 (44.2%). GGShapesImpl.DoDrawLine (2 refs) = 0, 36 (10.7%) BufferedRefreshImpl.ChunkingToScreenAux (2 refs) = 0, 19 (5.6%) BufferedRefreshImpl.UpdateBackingMap (2 refs) = 0, 18 (5.3%) ImagerRasterImpl.MaskFillViaBoxes (2 refs) = 0, 78 (23.1%) In summary, a gain of 5% might be had by making OutlineMovingParts faster. By drawing only part of the trajectory we are adding to, we might get 15-20%. I still don't understand why StartAdd was so fast (413, 307 vs 479, 384 now) in Cedar6.1. Maybe Jules Draw2d made the difference. 1) Obsolete (use benchmark 3 -- Bier, March 10, 1987 1:08:15 pm PST) Play AddBench.script. Load windowhacker.gargoyle. Add a line from the lower left corner of the window to the upper right corner. June 24, 1986 Bier, BunkerHill StartAdd. started: 2. total: 3034. avg: 1517. min: 1386. max: 1647, index: 1 StoreBackground. started: 2. total: 1879. avg: 939. min: 812. max: 1067, index: 1 SetBags. started: 2. total: 805. avg: 402. min: 399. max: 406, index: 1 AddPaint. started: 4. total: 276. avg: 69. min: 59. max: 79, index: 4 June 24, 1986, Bier, BunkerHill. Put Caret on its own plane.StartAdd. StartAdd. started: 2. total: 1159. avg: 579. min: 565. max: 594, index: 2 StoreBackground. started: 2. total: 38. avg: 19. min: 17. max: 20, index: 1 SetBags. started: 2. total: 764. avg: 382. min: 380. max: 384, index: 1 AddPaint. started: 4. total: 292. avg: 73. min: 64. max: 82, index: 4 July 2, 1986, Bier, Langley. Building the gravity bags incrementally. Fixed a refresh bug that caused the Background to be made from scratch. StartAdd. started: 2. total: 687. avg: 343. min: 293. max: 393, index: 2 SetBags. started: 2. total: 256. avg: 128. min: 126. max: 130, index: 1 AddPaint. started: 6. total: 472. avg: 78. min: 70. max: 94, index: 4 EndAdd. started: 2. total: 5615. avg: 2807. October 1, 1986, Bier, Independence. Routine performance check: StartAdd. starts: 1. total: 341. avg: 341. SetBagsForAction. starts: 1. total: 243. avg: 243. UpdateBagsForAction. starts: 1. total: 104. avg: 104. EndAdd. starts: 1. total: 505. avg: 505 (a bit high). EndAdd. started: 2. total: 12236. avg: 6118, Date?, Bier, ? Made MergeBackgroundAndOverlay redraw only the objects which are in front of the new one, i.e. none: EndAdd. started: 2. total: 613. avg: 306. Date? (probably July 1986), Bier, ? November 24, 1986, Bier, Independence. Object-oriented outlines. StartAdd. starts: 1. total: 362. avg: 362. min: 362. max: 362, index: 1 SetBagsForAction. starts: 1. total: 204. avg: 204. min: 204. max: 204, index: 1 UpdateBagsForAction. starts: 1. total: 94. avg: 94. min: 94. max: 94, index: 1 EndAdd. starts: 1. total: 472. avg: 472. (a bit high) Cedar7.0. March 3, 1987, Bier, QueenFish StartAdd. starts: 1. total: 428. avg: 428. min: 428. max: 428, index: 1, SetBagsForAction. starts: 1. total: 611. avg: 611. min: 611. max: 611, index: 1 UpdateBagsForAction. starts: 1. total: 58. avg: 58. min: 58. max: 58, index: 1 EndAdd. starts: 1. total: 1085. avg: 1085. min: 1085. max: 1085, index: 1 Another Try: StartAdd. starts: 1. total: 428. avg: 428. min: 428. max: 428, index: 1 (quite high) SetBagsForAction. starts: 1. total: 257. avg: 257. min: 257. max: 257, index: 1 UpdateBagsForAction. starts: 1. total: 58. avg: 58. min: 58. max: 58, index: 1 EndAdd. starts: 1. total: 615. avg: 615. min: 615. max: 615, index: 1 (quite high) 2) Playback BigG.script. July 8, 1986, Bier, Langley StartAdd. starts: 13. total: 10609. avg: 816. min: 277. max: 2016 EndAdd. starts: 1. total: 202. avg: 202. min: 202. max: 202 August 2, 1986, Bier, Independence, (dunno why this is so fast, maybe Independence helps) StartAdd. starts: 13. total: 7452. avg: 573. min: 277. max: 890, index: 8 EndAdd. starts: 1. total: 530. avg: 530. min: 530. max: 530 August 2, 1986, Bier, Independence, (painting Alignment lines black instead of gray) StartAdd. starts: 13. total: 7232. avg: 556. min: 284. max: 871, index: 9 EndAdd. starts: 1. total: 366. avg: 366. min: 366. max: 366, index: 1 October 1, 1986, Bier, Independence (a bit high) StartAdd. starts: 13. total: 9766. avg: 751. min: 308. max: 1951, index: 9 EndAdd. starts: 1. total: 277. avg: 277. min: 277. max: 277, index: 1 November 24, 1986, Bier, Independence (still high) StartAdd. starts: 13. total: 9241. avg: 710. min: 186. max: 1418, index: 12 EndAdd. starts: 1. total: 259. avg: 259. min: 259. max: 259, index: 1 December 30, 1986, Bier, QueenFish (even worse) StartAdd. starts: 13. total: 10793. avg: 830. min: 201. max: 1501, index: 13 EndAdd. starts: 1. total: 333. avg: 333. min: 333. max: 333, index: 1 January 5, 1987, Bier, QueenFish StartAdd. starts: 13. total: 8965. avg: 689. min: 203. max: 1309, index: 8 EndAdd. starts: 1. total: 289. avg: 289. min: 289. max: 289, index: 1 Any improvement is probably due to not precomputing intersections. January 14, 1987, Bier, QueenFish StartAdd. starts: 13. total: 9097. avg: 699. min: 240. max: 1209, index: 11 EndAdd. starts: 1. total: 328. avg: 328. min: 328. max: 328, index: 1 Using Draw2d.Line[dotted]. But using it non-zero stroke widths. January 14, 1987, Bier, QueenFish StartAdd. starts: 13. total: 5369. avg: 413. min: 179. max: 965, index: 8 EndAdd. starts: 1. total: 307. avg: 307. min: 307. max: 307, index: 1, Using Draw2d.Line[solid] with zero stroke widths. Cedar 7.0. March 3, 1987, Bier, QueenFish. Perhaps the line-drawing is slower because we're not using Draw2d anymore. StartAdd. starts: 13. total: 8036. avg: 618. min: 203. max: 1144, index: 10 EndAdd. starts: 1. total: 314. avg: 314. min: 314. max: 314, index: 1 March 10, 1987, Bier, QueenFish. After major renovations to bag updating. StartAdd. starts: 13. total: 9815. avg: 755. min: 230. max: 1589, index: 12 EndMotion. starts: 4. total: 1465. avg: 366. min: 324. max: 385, index: 4 March 17, 1987, Bier, QueenFish. StartAdd. starts: 13. total: 10390. avg: 799. min: 457. max: 1472, index: 13 EndMotion. starts: 4. total: 1679. avg: 419. min: 333. max: 514, index: 3 March 24, 1987, Bier, QueenFish. After using FunctionCache to suppress superfluous line drawing. A 37% improvement in performance. Yeah! StartAdd. starts: 13. total: 6499. avg: 499. min: 298. max: 1183, index: 10 EndMotion. starts: 4. total: 1893. avg: 473. min: 328. max: 789, index: 4 StartAdd. starts: 13. total: 6234. avg: 479. min: 236. max: 1204, index: 9 EndMotion. starts: 4. total: 1538. avg: 384. min: 328. max: 433, index: 4 Total BigG Time: 21 seconds. January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes StartAdd. starts: 13. total: 5617. avg: 432. min: 209. max: 1194, index: 7 EndMotion. starts: 4. total: 2165. avg: 541. min: 308. max: 1124, index: 4, August 2, 1988, Pier, Independence. Undo installed with captures and history tool StartAdd. starts: 13. total: 7491. avg: 576. min: 341. max: 836, index: 13, overflows: 0 EndMotion. starts: 4. total: 3389. avg: 847. min: 491. max: 1897, index: 3 StartAdd. starts: 13. total: 6984. avg: 537. min: 237. max: 699, index: 13, overflows: 0 EndMotion. starts: 4. total: 1904. avg: 476. min: 452. max: 493, index: 3, overflows: 0 November 1, 1989, Bier, QueenFish StartAdd. starts: 13. total: 5822. avg: 447. min: 263. max: 611, index: 13, overflows: 0 EndMotion. starts: 4. total: 3085. avg: 771. min: 682. max: 829, index: 1, overflows: 0 StartAdd. starts: 13. total: 5725. avg: 440. min: 229. max: 601, index: 13, overflows: 0 EndMotion. starts: 4. total: 1180. avg: 295. min: 236. max: 401, index: 1, overflows: 0 April 18, 1990, Bier, Pippin StartAdd. n: 13. total: 6172. avg: 474. range: [370..561], worst: 11 EndMotion. n: 4. total: 1819. avg: 454. range: [380..547], worst: 1 July 24, 1990, Bier, Lightspeed StartAdd. n: 13. total: 2998. avg: 230. range: [183..269], worst: 12 EndMotion. n: 4. total: 942. avg: 235. range: [207..281], worst: 1 3) Playback AddTest1.script July 8, 1986, Bier, Langley StartAdd. starts: 5. total: 2768. avg: 553. min: 486. max: 675, index: 1 EndAdd. starts: 3. total: 1473. avg: 491. min: 481. max: 504, index: 2 October 1, 1986, Bier, Independence StartAdd. starts: 5. total: 2828. avg: 565. min: 388. max: 1005, index: 5 EndAdd. starts: 3. total: 1528. avg: 509. min: 438. max: 569, index: 2 November 24, 1986, Bier, Independence StartAdd. starts: 5. total: 2349. avg: 469. min: 265. max: 921, index: 4 EndAdd. starts: 3. total: 1438. avg: 479. min: 429. max: 505, index: 2 January 5, 1987, Bier, Queenfish StartAdd. starts: 5. total: 2307. avg: 461. min: 278. max: 967, index: 5 EndAdd. starts: 3. total: 1848. avg: 616. min: 517. max: 809, index: 1 March 3, 1987 7:11:28 pm PST, Bier, Queenfish StartAdd. starts: 5. total: 2438. avg: 487. min: 318. max: 956, index: 4 EndAdd. starts: 3. total: 2539. avg: 846. min: 690. max: 1109, index: 1 March 10, 1987 1:12:47 pm PST, Bier, Queenfish StartAdd. starts: 5. total: 9071. avg: 1814. min: 1608. max: 1963, index: 3 EndMotion. starts: 3. total: 4701. avg: 1567. min: 1165. max: 2103, index: 3 StartAdd. starts: 5. total: 9138. avg: 1827. min: 1609. max: 2017, index: 5 EndMotion. starts: 3. total: 4659. avg: 1553. min: 1153. max: 2025, index: 3 March 10, 1987 3:00:24 pm PST, Bier, Queenfish. After reducing the SplitBackgroundAndOverlay calls for continue add. StartAdd. starts: 5. total: 5884. avg: 1176. min: 380. max: 2005, index: 3 EndMotion. starts: 3. total: 5001. avg: 1667. min: 1191. max: 2336, index: 3 March 10, 1987 3:17:28 pm PST, Bier, Queenfish. After elimating SplitBackgroundAndOverlay calls for StartAdd. StartAdd. starts: 5. total: 1975. avg: 395. min: 332. max: 440, index: 3 EndMotion. starts: 3. total: 5074. avg: 1691. min: 1223. max: 2332, index: 3 March 10, 1987 7:59:07 pm PST, Bier, Queenfish. After reducing the amount of repaint to only those objects above the ones that moved. StartAdd. starts: 5. total: 2761. avg: 552. min: 303. max: 1083, index: 3 EndMotion. starts: 3. total: 749. avg: 249. min: 190. max: 283, index: 1 March 17, 1987, Bier, Independence. After changing UpdateBoundBox to re-use boxes. StartAdd. starts: 5. total: 3091. avg: 618. min: 367. max: 1046, index: 4 EndMotion. starts: 3. total: 718. avg: 239. min: 182. max: 322, index: 3 StartAdd. starts: 5. total: 2710. avg: 542. min: 345. max: 1034, index: 5 EndMotion. starts: 3. total: 842. avg: 280. min: 182. max: 331, index: 1 March 25, 1987, Bier, Queenfish. StartAdd. starts: 5. total: 2471. avg: 494. min: 412. max: 736, index: 1 EndMotion. starts: 3. total: 707. avg: 235. min: 190. max: 272, index: 3 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes StartAdd. starts: 5. total: 2439. avg: 487. min: 254. max: 1199, index: 5 EndMotion. starts: 3. total: 498. avg: 166. min: 137. max: 198, index: 3 August 2, 1988, Pier, Independence. Undo install with capture and history tool StartAdd. starts: 5. total: 1597. avg: 319. min: 217. max: 357, index: 5, overflows: 0 EndMotion. starts: 3. total: 8598. avg: 2866. min: 2820. max: 2929, index: 3, overflows: 0 November 1, 1989, Bier, Queenfish (With Turbo on) StartAdd. starts: 5. total: 1841. avg: 368. min: 275. max: 447, index: 3, overflows: 0 EndMotion. starts: 3. total: 1417. avg: 472. min: 306. max: 742, index: 3, overflows: 0 StartAdd. starts: 5. total: 1912. avg: 382. min: 268. max: 448, index: 3, overflows: 0 EndMotion. starts: 3. total: 663. avg: 221. min: 181. max: 242, index: 1, overflows: 0 April 18, 1990, Bier, Pippin. Script a little broken. StartAdd. n: 5. total: 2179. avg: 435. range: [362..501], worst: 1 EndMotion. n: 3. total: 1150. avg: 383. range: [338..409], worst: 1 July 24, 1990, Bier, Lightspeed (color). Script fixed. StartAdd. n: 5. total: 1429. avg: 285. range: [246..384], worst: 1 EndMotion. n: 3. total: 701. avg: 233. range: [209..247], worst: 1 4) Reset Stats. Playback AddTest2.script. October 1, 1986, Bier, Independence StartAdd. starts: 21. total: 15461. avg: 736. min: 240. max: 2017, index: 21 EndAdd. starts: 9. total: 3224. avg: 358. min: 140. max: 630, index: 4 November 24, 1986, Bier, Independence StartAdd. starts: 21. total: 16386. avg: 780. min: 234. max: 1980, index: 21 EndAdd. starts: 9. total: 3269. avg: 363. min: 162. max: 538, index: 4 January 5, 1987, Bier, QueenFish StartAdd. starts: 21. total: 15673. avg: 746. min: 244. max: 1773, index: 20 EndAdd. starts: 9. total: 3812. avg: 423. min: 189. max: 867, index: 5 March 11, 1987, Bier, QueenFish StartAdd. starts: 21. total: 15356. avg: 731. min: 255. max: 1563, index: 21 EndMotion. starts: 11. total: 3724. avg: 338. min: 174. max: 563, index: 9 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes StartAdd. starts: 19. total: 7717. avg: 406. min: 182. max: 1402, index: 4 EndMotion. starts: 10. total: 2208. avg: 220. min: 136. max: 297, index: 10 August 2, 1988, Pier, Independence. undo and history tool StartAdd. starts: 21. total: 9120. avg: 434. min: 255. max: 745, index: 21, overflows: 0 EndMotion. starts: 11. total: 3970. avg: 360. min: 262. max: 561, index: 11, overflows: 0 November 1, 1989, Bier, QueenFish StartAdd. starts: 21. total: 9026. avg: 429. min: 238. max: 761, index: 21, overflows: 0 EndMotion. starts: 11. total: 4087. avg: 371. min: 247. max: 757, index: 11, overflows: 0 StartAdd. starts: 21. total: 9202. avg: 438. min: 240. max: 755, index: 21, overflows: 0 EndMotion. starts: 11. total: 2610. avg: 237. min: 180. max: 325, index: 10, overflows: 0 April 18, 1990, Bier, Pippin StartAdd. n: 21. total: 10494. avg: 499. range: [379..698], worst: 2 EndMotion. n: 11. total: 3990. avg: 362. range: [282..484], worst: 1 July 24, 1990, Bier, Lightspeed (color) StartAdd. n: 5. total: 1429. avg: 285. range: [246..384], worst: 1 EndMotion. n: 3. total: 701. avg: 233. range: [209..247], worst: 1 5) Lost script file. Playback AddTestNoHeuristics.script. Tests adding with lots of alignment lines around but heuristics off. StartAdd. starts: 7. total: 22063. avg: 3151. min: 2948. max: 3355, index: 5 EndAdd. starts: 1. total: 3118. avg: 3118. January 5, 1987, Bier, QueenFish StartAdd. starts: 7. total: 2352. avg: 336. min: 199. max: 754, index: 6 EndAdd. starts: 1. total: 3526. avg: 3526. StartAdd sped up by identifying more cases where redrawing the alignment lines isn't necessary. Deleting Performance 1) Playback DeleteTest1.script. Record the Delete time. (Loads windowhacker and deletes almost everything). July 6, 1987, Bier, QueenFish Delete. starts: 1. total: 2940. avg: 2940. Delete. starts: 1. total: 2532. avg: 2532. Delete. starts: 1. total: 3456. avg: 3456 July 6, 1987, Bier, QueenFish. After fixing GGSelect.DuplicateSelections to do Outlines once instead of twice. 50% of the time goes into building the list in GGSelectImpl.SelectedSlices in GGSelectImpl.SelectedOutlineSequences in ForEachOutlineRun. Delete. starts: 1. total: 2658. avg: 2658. Delete. starts: 1. total: 2346. avg: 2346. July 6, 1987, Bier, QueenFish. After implementing GGSelect.WalkSelectedSlices to reduce the time spent in GGSelectImpl.SelectedOutlineSequences. Now 39.7% is spent in GGSceneImpl.OutlinesFromOutlineExcept (this seems bogus). Another Spy run turns up 39.4% of the time in GGTrajImpl.RemakeSelection, mostly in GGSelectImpl.SelectSequence, mostly in GGSelectImpl.SelectSlice, mostly in GGSelectImpl.AppendSelection, mostly in AllocatorImpl.NewSystemObject (this is an Nconc!). Delete. starts: 1. total: 2485. avg: 2485. Delete. starts: 1. total: 2327. avg: 2327. July 6, 1987, Bier, QueenFish. After replacing Nconc in GGSelectImpl.AppendSelection by a tail pointer scheme. Delete. starts: 1. total: 2536. avg: 2536. Delete. starts: 1. total: 2309. avg: 2309. July 6, 1987, Bier, QueenFish. After replacing calls to SelectedOutlineSequences (building an entire generator) by calls to FirstSelectedOutlineSequences (finding just the first Outline needing work). At last, I got a factor of 2! Delete. starts: 1. total: 1185. avg: 1185. Delete. starts: 1. total: 1143. avg: 1143. July 6, 1987, Bier, QueenFish. After combining loops in GGOutlineImplB.SaveSelectionsInOutline to reduce Rosary operations. Refresh and Delete times are now balanced. Delete. starts: 1. total: 1110. avg: 1110. Delete. starts: 1. total: 1071. avg: 1071. January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes Delete. starts: 1. total: 2236. avg: 2236. Delete. starts: 1. total: 2196. avg: 2196. January 14, 1988, Pier, Independence. Objectified trajectories and smarter cached bound boxes Delete. starts: 1. total: 1272. avg: 1272. Delete. starts: 1. total: 1299. avg: 1299 January 15, 1988, Pier, Independence. Redundant calls to BoundBoxOfSelected removed Delete. starts: 1. total: 1143. avg: 1143. Delete. starts: 1. total: 1170. avg: 1170 August 2, 1988, Pier, Independence. Undo installed, with capture of almost entire scene Delete. starts: 1. total: 2016. avg: 2016. Delete. starts: 1. total: 2080. avg: 2080 November 1, 1989, Bier, Queenfish Delete. starts: 1. total: 1539. avg: 1539. Delete. starts: 1. total: 1499. avg: 1499. April 18, 1990, Bier, Pippin Delete. n: 1. total: 4698. avg: 4698. range: [4698..4698], worst: 1 July 25, 1990, Bier, Pippin Delete. n: 1. total: 1127. avg: 1127. range: [1127..1127], worst: 1 July 24, 1990, Bier, Lightspeed (color) Delete. n: 1. total: 356. avg: 356. range: [356..356], worst: 1 Delete. n: 1. total: 362. avg: 362. range: [362..362], worst: 1 December 3, 1991, Bier, Duet (color, unoptimized) Delete. n: 1. total: 435. avg: 435. range: [435..435], worst: 1 RestoreScreenAndInvariants. n: 1. total: 236. avg: 236. range: [236..236] Delete. n: 1. total: 433. avg: 433. range: [433..433], worst: 1 RestoreScreenAndInvariants. n: 1. total: 242. avg: 242. range: [242..242] Caret Positioning Performance June 24, 1986 4:20:57 pm PDT, Bier, BunkerHill 1) Playback IntersectionTest1.script. Record the StartCaretPos line. November 6, 1986, Bier, QueenFish StartCaretPos. starts: 16. total: 2845. avg: 177. min: 162. max: 207 November 6, 1986, Bier, QueenFish (after giving Line segments permanent Edge storage). Much of the remaining time is for drawing the Control Point feedback plane. StartCaretPos. starts: 16. total: 2730. avg: 170. min: 140. max: 302, November 26, 1986, Bier, QueenFish (Object-oriented outlines). StartCaretPos. starts: 16. total: 3040. avg: 190. min: 154. max: 242, index: 7 December 29, 1986, Bier, QueenFish. Less feedback during caret motion. StartCaretPos. starts: 16. total: 1797. avg: 112. min: 95. max: 206, index: 7, January 5, 1987, Bier, QueenFish. StartCaretPos. starts: 16. total: 1975. avg: 123. min: 86. max: 223, index: 7 March 11, 1987, Bier, QueenFish (Cedar7.0) StartCaretPos. starts: 16. total: 2028. avg: 126. min: 96. max: 217, index: 5 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes StartCaretPos. starts: 16. total: 1692. avg: 105. min: 103. max: 131, index: 1 November 1, 1989, Bier, QueenFish. StartCaretPos. starts: 16. total: 2312. avg: 144. min: 127. max: 156, index: 1 StartCaretPos. starts: 16. total: 2333. avg: 145. min: 127. max: 154, index: 1 April 18, 1990, Bier, Pippin StartCaretPos. n: 16. total: 4944. avg: 309. range: [272..401], worst: 15 July 25, 1990, Bier, Pippin StartCaretPos. n: 16. total: 5690. avg: 355. range: [271..488], worst: 14 July 24, 1990, Bier, Lightspeed (color) StartCaretPos. n: 16. total: 3495. avg: 218. range: [215..222], worst: 7 StartCaretPos. n: 16. total: 3507. avg: 219. range: [214..223], worst: 1 October 31, 1990, Bier, Arpeggio (SS1+, SunOS4.1) With delta error messages. StartCaretPos. n: 1. total: 609. avg: 609. range: [609..609], worst: 1 StartCaretPos. n: 15. total: 7740. avg: 516. range: [389..760], worst: 5 RestoreScreenAndInvariants. n: 15. total: 5510. avg: 367. range: [250..510], worst: 5 PaintViewer. n: 15. total: 5509. avg: 367. range: [250..509], worst: 5 DoWithBuffer. n: 15. total: 5179. avg: 345. range: [240..480], worst: 5 MaskLayer. n: 15. total: 559. avg: 37. range: [19..69], worst: 15 DrawNoMap. n: 45. total: 1219. avg: 27. range: [0..79], worst: 14 RefreshCaretPlane. n: 15. total: 479. avg: 31. range: [19..49], worst: 9 RefreshCPFeedback. n: 15. total: 399. avg: 26. range: [9..79], worst: 5 RefreshOverlay. n: 15. total: 90. avg: 6. range: [0..20], worst: 2 TransferLayer. n: 15. total: 1300. avg: 86. range: [50..139], worst: 8 MultiMap. n: 15. total: 449. avg: 29. range: [10..59], worst: 12 StartCaretPos. n: 15. total: 7859. avg: 523. range: [300..719], worst: 14 StartCaretPos. n: 1. total: 730. avg: 730. range: [730..730], worst: 1 2) Playback IntersectionTest2.script. Record the DuringCaretPos and EndCaretPos times. January 7, 1987, Bier, Queenfish DuringCaretPos. starts: 18. total: 2323. avg: 129. min: 86. max: 208, index: 6 EndCaretPos. starts: 9. total: 4492. avg: 499. min: 167. max: 1596, index: 2 March 11, 1987, Bier, QueenFish (Cedar7.0) DuringCaretPos. starts: 41. total: 4949. avg: 120. min: 82. max: 212, index: 8 EndCaretPos. starts: 25. total: 5462. avg: 218. min: 151. max: 453, index: 5 January 13, 1988, Pier, Independence. Objectified trajectories and cached bound boxes DuringCaretPos. starts: 41. total: 4335. avg: 105. min: 97. max: 125, index: 1 EndCaretPos. starts: 25. total: 4772. avg: 190. min: 150. max: 338, index: 17 November 1, 1989, Bier, Queenfish DuringCaretPos. starts: 41. total: 5631. avg: 137. min: 121. max: 151, index: 24, overflows: 0 EndCaretPos. starts: 25. total: 5011. avg: 200. min: 174. max: 285, index: 18, overflows: 0 DuringCaretPos. starts: 59. total: 8088. avg: 137. min: 121. max: 151, index: 42, overflows: 0 EndCaretPos. starts: 34. total: 6873. avg: 202. min: 171. max: 285, index: 18, overflows: 0 April 18, 1990, Bier, Pippin DuringCaretPos. n: 41. total: 13537. avg: 330. range: [269..418], worst: 12 EndCaretPos. n: 25. total: 8810. avg: 352. range: [297..480], worst: 23 July 25, 1990, Bier, Pippin DuringCaretPos. n: 16. total: 2426. avg: 151. range: [82..281], worst: 14 EndCaretPos. n: 25. total: 10823. avg: 432. range: [305..595], worst: 23 July 25, 1990, Bier, Lightspeed (color) DuringCaretPos. n: 16. total: 813. avg: 50. range: [36..103], worst: 13 EndCaretPos. n: 25. total: 5996. avg: 239. range: [228..272], worst: 17 3) Lost script. Load Halftones.gargoyle. Playback HalftonesCaretTest.script. Record the StartCaretPos and DuringCaretPos times. StartCaretPos. starts: 1. total: 2003. avg: 2003. min: 2003. max: 2003 DuringCaretPos. starts: 2. total: 3893. avg: 1946. min: 1918. max: 1974, index: 1 StartCaretPos. starts: 1. total: 255. avg: 255. min: 255. max: 255 DuringCaretPos. starts: 2. total: 420. avg: 210. min: 167. max: 253 After substituting an O(n) algorithm for drawing the control point feedback and reducing the amount of feedback that is drawn. Oops. It was still O(n^2), but it allocates a lot less. StartCaretPos. starts: 1. total: 169. avg: 169. DuringCaretPos. starts: 2. total: 350. avg: 175. min: 167. max: 182, index: 2, January 5, 1987, Bier, QueenFish StartCaretPos. starts: 1. total: 174. avg: 174 DuringCaretPos. starts: 2. total: 311. avg: 155. min: 153. max: 158, index: 2, January 7, 1987, Bier, QueenFish StartCaretPos. starts: 1. total: 168. avg: 168 DuringCaretPos. starts: 2. total: 301. avg: 150. min: 150. max: 151, index: 2, January 7, 1987, Bier, QueenFish After making the algorithm truly O(n). Not much effect because no selection feedback is attempted during caret motion. The time to record is the repainting time. Selection Performance 1) Load Halftones.gargoyle. SelectAll. Find and record the time for SelectAll using the ShowSelectedStatistic item in the Debug menu. November 11, 1986, Bier, QueenFish SelectAll. starts: 1. total: 9144. avg: 9144. December 17, 1986, Bier, QueenFish SelectAll. starts: 1. total: 8961. avg: 8961. December 29, 1986, Bier, QueenFish. After simplifying the Selection feedback so it doesn't paint anything twice. SelectAll. starts: 1. total: 7805. avg: 7805. January 7, 1987, Bier, QueenFish. SelectAll. starts: 1. total: 5454. avg: 5454. After speeding up joint generators. March 11, 1987, Bier, QueenFish. Cedar7.0 SelectAll. starts: 1. total: 6702. avg: 6702. min: 6702. max: 6702, index: 1 (somewhat high) November 2, 1989, Bier, QueenFish. SelectAll. starts: 1. total: 2243. avg: 2243. min: 2243. max: 2243, index: 1 SelectAll. starts: 1. total: 2036. avg: 2036. min: 2036. max: 2036, index: 1, April 18, 1990, Bier, Pippin SelectAll. n: 1. total: 1676. avg: 1676. range: [1676..1676], worst: 1 May 29, 1990, Bier, Pippin SelectAll. n: 1. total: 1607. avg: 1607. range: [1607..1607], worst: 1 SelectAll. n: 1. total: 1707. avg: 1707. range: [1707..1707], worst: 1 2) (Obsolete. OctaFlowers.gargoyle lost). Action area full column. Playback OctaFlowers.script. Record the StartSelectWithBox and EndSelectWithBox times. March 12, 1988, Bier, QueenFish StartSelectWithBox. starts: 3. total: 547. avg: 182. min: 174. max: 186, index: 3 EndSelectWithBox. starts: 3. total: 20365. avg: 6788. min: 5483. max: 9316, index: 3 March 12, 1988, Bier, QueenFish. EndSelectWithBox no longer deletes the box and repaints. StartSelectWithBox. starts: 3. total: 530. avg: 176. min: 176. max: 177, index: 2 EndSelectWithBox. starts: 3. total: 2936. avg: 978. min: 753. max: 1400, index: 1 StartSelectWithBox. starts: 3. total: 540. avg: 180. min: 174. max: 185, index: 2 EndSelectWithBox. starts: 3. total: 2624. avg: 874. min: 755. max: 948, index: 2 March 12, 1988, Bier, QueenFish. GetTightBox now caches the box. StartSelectWithBox. starts: 3. total: 678. avg: 226. min: 179. max: 314, index: 1 EndSelectWithBox. starts: 3. total: 2019. avg: 673. min: 629. max: 751, index: 1 Setting Up Gravity Bags 1) Run BuiltInFilters.script. Record both times for BuiltInFilters. The first time is for adding 17 lines and computing 1378 (should be only 982) intersections. The second time is for adding 17 circles and computing 561 circle-circle intersections. Note: as of late 1987 all intersections are computed on the fly. December 29, 1986, Bier, QueenFish Lines, BuiltInFilters. starts: 1. total: 458. avg: 458. Circles, BuiltInFilters. starts: 1. total: 361. avg: 361. December 29, 1986, Bier, Queenfish. These times seem to be very sensitive to garbage collection. Lines, BuiltInFilters. starts: 1. total: 1240. avg: 1240 Circles, BuiltInFilters. starts: 1. total: 403. avg: 403 Lines, BuiltInFilters. starts: 1. total: 1363. avg: 1363 Circles, BuiltInFilters. starts: 1. total: 388. avg: 388. January 5, 1987, Bier, Queenfish Lines, BuiltInFilters. starts: 1. total: 923. avg: 923. Circles, BuiltInFilters. starts: 1. total: 979. avg: 979. January 5, 1987, Bier, Queenfish. This suggests that garbage collection makes about a 500 msec difference. Lines, BuiltInFilters. starts: 1. total: 164. avg: 164. Circles, BuiltInFilters. starts: 1. total: 52. avg: 52. Lines, BuiltInFilters. starts: 1. total: 633. avg: 633. Circles, BuiltInFilters. starts: 1. total: 77. avg: 77. March 11, 1987, Bier, Queenfish. Cedar7.0. Lines. starts: 1. total: 161. avg: 161. Circles. starts: 1. total: 146. avg: 146. Lines. starts: 1. total: 290. avg: 290 Circles. starts: 1. total: 119. avg: 119 (a bit high) January 14, 1988. Pier. Independence. Objectified trajectories and cached bound boxes Lines. BuiltInFilters. starts: 1. total: 136. avg: 136. min: 136. max: 136, index: 1 Circles. BuiltInFilters. starts: 1. total: 73. avg: 73. min: 73. max: 73, index: 1 November 2, 1989, Bier, QueenFish. Adding lines no longer calls BuiltInFilters, so we only get Circle statistics: Circles. BuiltInFilters. starts: 1. total: 52. avg: 52. min: 52. max: 52, index: 1 April 18, 1990, Bier, Pippin Lines, BuiltInFilters. n: 0. total: 0. avg: 0. range: [0..0], worst: 0 Circles, BuiltInFilters. n: 1. total: 17. avg: 17. range: [17..17], worst: 1 2) Obsolete, since midpoints are no longer precomputed. [Play ComputeMidpoints.script. Loads HackerHouse and turns on midpoints.] April 8, 1987, Bier, QueenFish AddAllMidpoints. starts: 1. total: 1168. AddAllMidpoints. starts: 1. total: 1064. Total script: 29 seconds. April 8, 1987, Bier, QueenFish. Midpoints are no longer precomputed. AddAllMidpoints. starts: 1. total: 0. 3) Not yet made, Bier, May 6, 1988. Play DragTest.script. (Loads hacker house, selects an object, begins to drag.) Record StartDrag, DuringDrag, EndMotion, StaticToDynamicBags, and DynamicToStaticBags times. 4) Play BagsTest.script. Record all statistics. Test bags with lots of slope lines. March 20, 1988, Bier, QueenFish MakeAllHot. starts: 1. total: 6363. avg: 6363. MakeAllCold. starts: 1. total: 272. avg: 272. MakeAllHot. starts: 1. total: 947. avg: 947. ToggleSlope. starts: 1. total: 1886. avg: 1886. ToggleSlope. starts: 1. total: 3154. avg: 3154. StartAdd. starts: 8. total: 18312. avg: 2289. min: 1888. max: 3340, index: 4 ContinueAdd. starts: 7. total: 10678. avg: 1525. min: 1471. max: 1568, index: 2 EndMotion. starts: 1. total: 3350. avg: 3350. StartDrag. starts: 1. total: 1745. avg: 1745. DuringDrag. starts: 1. total: 1527. avg: 1527. EndMotion. starts: 1. total: 3270. avg: 3270. StartDrag. starts: 1. total: 1635. avg: 1635. DuringDrag. starts: 2. total: 1682. avg: 841. min: 162. max: 1520, index: 1 EndMotion. starts: 1. total: 3272. avg: 3272. StartAdd. starts: 8. total: 1914. avg: 239. min: 185. max: 302, index: 5 ContinueAdd. starts: 7. total: 165. avg: 23. min: 20. max: 35, index: 3 EndMotion. starts: 1. total: 482. avg: 482. StartDrag. starts: 1. total: 61. avg: 61. DuringDrag. starts: 1. total: 176. avg: 176. EndMotion. starts: 1. total: 458. avg: 458. StartDrag. starts: 1. total: 35. avg: 35. DuringDrag. starts: 2. total: 338. avg: 169. min: 161. max: 176, index: 1 EndMotion. starts: 1. total: 443. avg: 443. MakeCold. starts: 1. total: 3091. avg: 3091. MakeHot. starts: 1. total: 2469. avg: 2469. March 20, 1988, Bier, QueenFish. Using hashing to speed line comparisons. (and walkprocs) MakeAllHot. starts: 1. total: 2381. avg: 2381. MakeAllCold. starts: 1. total: 245. avg: 245. MakeAllHot. starts: 1. total: 685. avg: 685. ToggleSlope. starts: 1. total: 1414. avg: 1414. ToggleSlope. starts: 1. total: 2254. avg: 2254. StartAdd. starts: 8. total: 8313. avg: 1039. min: 814. max: 2110, index: 1 ContinueAdd. starts: 7. total: 4316. avg: 616. min: 588. max: 665, index: 7 EndMotion. starts: 1. total: 2468. avg: 2468. StartDrag. starts: 1. total: 669. avg: 669. DuringDrag. starts: 1. total: 1520. avg: 1520. EndMotion. starts: 1. total: 2381. avg: 2381. StartDrag. starts: 1. total: 612. avg: 612. DuringDrag. starts: 2. total: 1694. avg: 847. min: 176. max: 1517, index: 1 EndMotion. starts: 1. total: 2339. avg: 2339. StartAdd. starts: 8. total: 1875. avg: 234. min: 188. max: 289, index: 8 ContinueAdd. starts: 7. total: 181. avg: 25. min: 19. max: 44, index: 3 EndMotion. starts: 1. total: 454. avg: 454. StartDrag. starts: 1. total: 64. avg: 64. DuringDrag. starts: 2. total: 343. avg: 171. min: 165. max: 178, index: 1 EndMotion. starts: 1. total: 451. avg: 451. StartDrag. starts: 1. total: 34. avg: 34. DuringDrag. starts: 2. total: 354. avg: 177. min: 176. max: 178, index: 1 EndMotion. starts: 1. total: 429. avg: 429. MakeCold. starts: 1. total: 2257. avg: 2257. MakeHot. starts: 1. total: 928. avg: 928. March 21, 1988, Bier, QueenFish. More carefully detecting cases where no auto triggers are added. These improvements shown underlined. More carefully detecting cases where no hot objects are moving. These improvements shown in italics. MakeAllHot. starts: 1. total: 2214. avg: 2214. MakeAllCold. starts: 1. total: 258. avg: 258. MakeAllHot. starts: 1. total: 678. avg: 678. ToggleSlope. starts: 1. total: 1265. avg: 1265. ToggleSlope. starts: 1. total: 1998. avg: 1998. StartAdd. starts: 8. total: 8576. avg: 1072. min: 887. max: 1970, index: 1 ContinueAdd. starts: 7. total: 186. avg: 26. min: 20. max: 40, index: 2 EndMotion. starts: 1. total: 3718. avg: 3718. StartDrag. starts: 1. total: 598. avg: 598. DuringDrag. starts: 1. total: 1407. avg: 1407. EndMotion. starts: 1. total: 1615. avg: 1615. StartDrag. starts: 1. total: 27. avg: 27. DuringDrag. starts: 2. total: 1579. avg: 789. min: 215. max: 1364, index: 1 EndMotion. starts: 1. total: 445. avg: 445. StartAdd. starts: 8. total: 2096. avg: 262. min: 220. max: 287, index: 7 ContinueAdd. starts: 7. total: 179. avg: 25. min: 20. max: 38, index: 1 EndMotion. starts: 1. total: 462. avg: 462. StartDrag. starts: 1. total: 53. avg: 53. DuringDrag. starts: 2. total: 422. avg: 211. min: 205. max: 217, index: 1 EndMotion. starts: 1. total: 456. avg: 456. StartDrag. starts: 1. total: 27. avg: 27. DuringDrag. starts: 2. total: 432. avg: 216. min: 215. max: 217, index: 2 EndMotion. starts: 1. total: 439. avg: 439. MakeCold. starts: 1. total: 2007. avg: 2007. MakeHot. starts: 1. total: 868. avg: 868. March 21, 1988, Bier, QueenFish. Augmenting the foreground plane for StartMotion, even if Auto is on. MakeAllHot. starts: 1. total: 2160. avg: 2160. MakeAllCold. starts: 1. total: 257. avg: 257. MakeAllHot. starts: 1. total: 679. avg: 679. ToggleSlope. starts: 1. total: 1266. avg: 1266. ToggleSlope. starts: 1. total: 2012. avg: 2012. StartAdd. starts: 8. total: 9123. avg: 1140. min: 841. max: 1970, index: 1 ContinueAdd. starts: 7. total: 4045. avg: 577. min: 536. max: 605, index: 2 EndMotion. starts: 1. total: 2118. avg: 2118. StartDrag. starts: 1. total: 585. avg: 585. DuringDrag. starts: 1. total: 1406. avg: 1406. EndMotion. starts: 1. total: 2105. avg: 2105. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 439. avg: 219. min: 215. max: 223, index: 1 EndMotion. starts: 1. total: 445. avg: 445. StartAdd. starts: 8. total: 2107. avg: 263. min: 217. max: 286, index: 8 ContinueAdd. starts: 7. total: 159. avg: 22. min: 20. max: 30, index: 6 EndMotion. starts: 1. total: 463. avg: 463. StartDrag. starts: 1. total: 49. avg: 49. DuringDrag. starts: 2. total: 421. avg: 210. min: 203. max: 218, index: 1 EndMotion. starts: 1. total: 458. avg: 458. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 433. avg: 216. min: 215. max: 217, index: 2 EndMotion. starts: 1. total: 437. avg: 437. MakeCold. starts: 1. total: 2005. avg: 2005. MakeHot. starts: 1. total: 865. avg: 865. March 22, 1988, Bier, QueenFish. Using FilterLists to reduce time to compute Cartesian product. MakeAllHot. starts: 1. total: 1890. avg: 1890. MakeAllCold. starts: 1. total: 264. avg: 264. MakeAllHot. starts: 1. total: 365. avg: 365. ToggleSlope. starts: 1. total: 938. avg: 938. ToggleSlope. starts: 1. total: 1684. avg: 1684. StartAdd. starts: 8. total: 6302. avg: 787. min: 692. max: 874, index: 7 ContinueAdd. starts: 7. total: 172. avg: 24. min: 20. max: 39, index: 7 EndMotion. starts: 1. total: 1662. avg: 1662. StartDrag. starts: 1. total: 487. avg: 487. DuringDrag. starts: 1. total: 266. avg: 266. EndMotion. starts: 1. total: 1427. avg: 1427. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 437. avg: 218. min: 214. max: 222, index: 1 EndMotion. starts: 1. total: 256. avg: 256. StartAdd. starts: 8. total: 2078. avg: 259. min: 220. max: 286, index: 7 ContinueAdd. starts: 7. total: 177. avg: 25. min: 20. max: 37, index: 1 EndMotion. starts: 1. total: 274. avg: 274. StartDrag. starts: 1. total: 50. avg: 50. DuringDrag. starts: 2. total: 420. avg: 210. min: 203. max: 217, index: 1 EndMotion. starts: 1. total: 271. avg: 271. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 431. avg: 215. min: 215. max: 215, index: 2 EndMotion. starts: 1. total: 249. avg: 249. MakeCold. starts: 1. total: 1681. avg: 1681. MakeHot. starts: 1. total: 546. avg: 546. March 22, 1988, Bier, QueenFish. Incremental adding of auto alignments. MakeAllHot. starts: 1. total: 1859. avg: 1859. MakeAllCold. starts: 1. total: 241. avg: 241. MakeAllHot. starts: 1. total: 285. avg: 285. ToggleSlope. starts: 1. total: 942. avg: 942. ToggleSlope. starts: 1. total: 1662. avg: 1662. StartAdd. starts: 8. total: 3383. avg: 422. min: 308. max: 656, index: 7 ContinueAdd. starts: 7. total: 149. avg: 21. min: 20. max: 21, index: 1 EndMotion. starts: 1. total: 1452. avg: 1452. StartDrag. starts: 1. total: 137. avg: 137. DuringDrag. starts: 1. total: 500. avg: 500. EndMotion. starts: 1. total: 1422. avg: 1422. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 438. avg: 219. min: 215. max: 222, index: 1 EndMotion. starts: 1. total: 255. avg: 255. StartAdd. starts: 8. total: 2068. avg: 258. min: 216. max: 289, index: 7 ContinueAdd. starts: 7. total: 167. avg: 23. min: 20. max: 38, index: 7 EndMotion. starts: 1. total: 274. avg: 274. StartDrag. starts: 1. total: 53. avg: 53. DuringDrag. starts: 2. total: 425. avg: 212. min: 208. max: 216, index: 1 EndMotion. starts: 1. total: 277. avg: 277. StartDrag. starts: 1. total: 27. avg: 27. DuringDrag. starts: 2. total: 428. avg: 214. min: 214. max: 214, index: 2 EndMotion. starts: 1. total: 247. avg: 247. MakeCold. starts: 1. total: 1671. avg: 1671. MakeHot. starts: 1. total: 522. avg: 522. ToggleSlope. starts: 1. total: 1011. avg: 1011. ToggleSlope. starts: 1. total: 212. avg: 212. March 23, 1988, Bier, QueenFish. Faster Starbursts. (The non-bold numbers show the results for if startbursts were still slow.) MakeAllHot. starts: 1. total: 1813. avg: 1797. MakeAllCold. starts: 1. total: 241. avg: 243. MakeAllHot. starts: 1. total: 283. avg: 284. ToggleSlope. starts: 1. total: 938. avg: 936. ToggleSlope. starts: 1. total: 1654. avg: 1637. StartAdd. starts: 8. total: 3395. avg: 320. min: 256. max: 422, index: 8 ContinueAdd. starts: 7. total: 151. avg: 27. min: 20. max: 22, index: 7 EndMotion. starts: 1. total: 1454. avg: 1431. StartDrag. starts: 1. total: 135. avg: 139. DuringDrag. starts: 1. total: 491. avg: 210. EndMotion. starts: 1. total: 1411. avg: 1419. StartDrag. starts: 1. total: 24. avg: 23. DuringDrag. starts: 2. total: 439. avg: 188. min: 215. max: 223, index: 1 EndMotion. starts: 1. total: 256. avg: 256. StartAdd. starts: 8. total: 2085. avg: 234. min: 217. max: 289, index: 7 ContinueAdd. starts: 7. total: 171. avg: 21. min: 19. max: 44, index: 3 EndMotion. starts: 1. total: 275. avg: 275. StartDrag. starts: 1. total: 53. avg: 56. DuringDrag. starts: 2. total: 430. avg: 183. min: 210. max: 219, index: 1 EndMotion. starts: 1. total: 275. avg: 277. StartDrag. starts: 1. total: 24. avg: 24. DuringDrag. starts: 2. total: 432. avg: 367. min: 215. max: 217, index: 2 EndMotion. starts: 1. total: 249. avg: 248. MakeCold. starts: 1. total: 1666. avg: 1685. MakeHot. starts: 1. total: 533. avg: 540. ToggleSlope. starts: 1. total: 1003. avg: 1008. ToggleSlope. starts: 1. total: 209. avg: 220. March 29, 1988, Bier, QueenFish. Hash tables for trigger bag and scene bag. MakeAllHot. starts: 1. total: 1806. avg: 1806. MakeAllCold. starts: 1. total: 264. avg: 264. MakeAllHot. starts: 1. total: 294. avg: 294. ToggleSlope. starts: 1. total: 933. avg: 933. ToggleSlope. starts: 1. total: 1628. avg: 1628. StartAdd. starts: 8. total: 4790. avg: 598. min: 316. max: 1363, index: 6 ContinueAdd. starts: 7. total: 218. avg: 31. min: 22. max: 53, index: 7 EndMotion. starts: 1. total: 1820. avg: 1820. StartDrag. starts: 1. total: 142. avg: 142. DuringDrag. starts: 1. total: 507. avg: 507. EndMotion. starts: 1. total: 1407. avg: 1407. StartDrag. starts: 1. total: 29. avg: 29. DuringDrag. starts: 2. total: 452. avg: 226. min: 222. max: 229, index: 1 EndMotion. starts: 1. total: 256. avg: 256. StartAdd. starts: 8. total: 2169. avg: 271. min: 226. max: 300, index: 7 ContinueAdd. starts: 7. total: 171. avg: 24. min: 21. max: 37, index: 2 EndMotion. starts: 1. total: 274. avg: 274. StartDrag. starts: 1. total: 54. avg: 54. DuringDrag. starts: 2. total: 444. avg: 222. min: 215. max: 228, index: 1 EndMotion. starts: 1. total: 275. avg: 275. StartDrag. starts: 1. total: 29. avg: 29. DuringDrag. starts: 2. total: 443. avg: 221. min: 221. max: 221, index: 1 EndMotion. starts: 1. total: 249. avg: 249. MakeCold. starts: 1. total: 1675. avg: 1675. MakeHot. starts: 1. total: 534. avg: 534. ToggleSlope. starts: 1. total: 1002. avg: 1002. ToggleSlope. starts: 1. total: 213. avg: 213. April 11, 1988, Bier, QueenFish. Zip is now actually used for lines. Foreground bitmap save and restore. MakeAllHot. starts: 1. total: 1397. avg: 1397. MakeAllCold. starts: 1. total: 274. avg: 274. MakeAllHot. starts: 1. total: 240. avg: 240. ToggleSlope. starts: 1. total: 773. avg: 773. ToggleSlope. starts: 1. total: 1323. avg: 1323. StartAdd. starts: 8. total: 3956. avg: 494. min: 422. max: 605, index: 8 ContinueAdd. starts: 7. total: 184. avg: 26. min: 21. max: 36, index: 3 EndMotion. starts: 1. total: 294. avg: 294. StartDrag. starts: 1. total: 182. avg: 182. DuringDrag. starts: 1. total: 242. avg: 242. EndMotion. starts: 1. total: 286. avg: 286. StartDrag. starts: 1. total: 28. avg: 28. DuringDrag. starts: 2. total: 387. avg: 193. min: 191. max: 196, index: 1 EndMotion. starts: 1. total: 258. avg: 258. StartAdd. starts: 8. total: 2363. avg: 295. min: 195. max: 354, index: 5 ContinueAdd. starts: 7. total: 173. avg: 24. min: 21. max: 37, index: 2 EndMotion. starts: 1. total: 278. avg: 278. StartDrag. starts: 1. total: 55. avg: 55. DuringDrag. starts: 2. total: 380. avg: 190. min: 185. max: 195, index: 1 EndMotion. starts: 1. total: 277. avg: 277. StartDrag. starts: 1. total: 29. avg: 29. DuringDrag. starts: 2. total: 381. avg: 190. min: 190. max: 190, index: 1 EndMotion. starts: 1. total: 251. avg: 251. MakeCold. starts: 1. total: 1381. avg: 1381. MakeHot. starts: 1. total: 578. avg: 578. ToggleSlope. starts: 1. total: 873. avg: 873. ToggleSlope. starts: 1. total: 229. avg: 229. April 16, 1988, Bier, QueenFish. ToggleSlope works incrementally. The SceneBag, TriggerBag, and AlignBag copy faster because they are implemented with non-destructive list operations. MakeAllHot. starts: 1. total: 1393. avg: 1393. MakeAllCold. starts: 1. total: 264. avg: 264. MakeAllHot. starts: 1. total: 240. avg: 240. ToggleSlope. starts: 1. total: 692. avg: 692. ToggleSlope. starts: 1. total: 753. avg: 753. StartAdd. starts: 8. total: 3289. avg: 411. min: 279. max: 489, index: 7 ContinueAdd. starts: 7. total: 158. avg: 22. min: 21. max: 24, index: 7 EndMotion. starts: 1. total: 299. avg: 299. StartDrag. starts: 1. total: 159. avg: 159. DuringDrag. starts: 1. total: 242. avg: 242. EndMotion. starts: 1. total: 286. avg: 286. StartDrag. starts: 1. total: 30. avg: 30. DuringDrag. starts: 2. total: 389. avg: 194. min: 191. max: 198, index: 1 EndMotion. starts: 1. total: 259. avg: 259. StartAdd. starts: 8. total: 2320. avg: 290. min: 198. max: 333, index: 8 ContinueAdd. starts: 7. total: 184. avg: 26. min: 21. max: 39, index: 7 EndMotion. starts: 1. total: 277. avg: 277. StartDrag. starts: 1. total: 61. avg: 61. DuringDrag. starts: 2. total: 377. avg: 188. min: 185. max: 192, index: 1 EndMotion. starts: 1. total: 277. avg: 277. StartDrag. starts: 1. total: 31. avg: 31. DuringDrag. starts: 2. total: 385. avg: 192. min: 192. max: 193, index: 1 EndMotion. starts: 1. total: 251. avg: 251. MakeCold. starts: 1. total: 1400. avg: 1400. MakeHot. starts: 1. total: 518. avg: 518. ToggleSlope. starts: 1. total: 878. avg: 878. ToggleSlope. starts: 1. total: 236. avg: 236. April 16, 1988, Bier, QueenFish. No CONS for the Ray pool. Less Trig functions in JointAddSlopeLine MakeAllHot. starts: 1. total: 1369. avg: 1369. MakeAllCold. starts: 1. total: 261. avg: 261. MakeAllHot. starts: 1. total: 238. avg: 238. ToggleSlope. starts: 1. total: 657. avg: 657. ToggleSlope. starts: 1. total: 715. avg: 715. StartAdd. starts: 8. total: 3086. avg: 385. min: 279. max: 458, index: 7 ContinueAdd. starts: 7. total: 174. avg: 24. min: 21. max: 39, index: 7 EndMotion. starts: 1. total: 293. avg: 293. StartDrag. starts: 1. total: 157. avg: 157. DuringDrag. starts: 1. total: 243. avg: 243. EndMotion. starts: 1. total: 288. avg: 288. StartDrag. starts: 1. total: 31. avg: 31. DuringDrag. starts: 2. total: 390. avg: 195. min: 192. max: 198, index: 1 EndMotion. starts: 1. total: 262. avg: 262. StartAdd. starts: 8. total: 2332. avg: 291. min: 198. max: 334, index: 8 ContinueAdd. starts: 7. total: 155. avg: 22. min: 20. max: 23, index: 7 EndMotion. starts: 1. total: 278. avg: 278. StartDrag. starts: 1. total: 61. avg: 61. DuringDrag. starts: 2. total: 381. avg: 190. min: 187. max: 194, index: 1 EndMotion. starts: 1. total: 279. avg: 279. StartDrag. starts: 1. total: 31. avg: 31. DuringDrag. starts: 2. total: 384. avg: 192. min: 192. max: 192, index: 2 EndMotion. starts: 1. total: 251. avg: 251. MakeCold. starts: 1. total: 1341. avg: 1341. MakeHot. starts: 1. total: 515. avg: 515. ToggleSlope. starts: 1. total: 850. avg: 850. ToggleSlope. starts: 1. total: 226. avg: 226. August 11, 1988, Bier, QueenFish. After adding UNDO and buffering for the color display. MakeAllHot. starts: 1. total: 1527. avg: 1527. MakeAllCold. starts: 1. total: 325. avg: 325. MakeAllHot. starts: 1. total: 301. avg: 301. ToggleSlope. starts: 1. total: 664. avg: 664. ToggleSlope. starts: 1. total: 713. avg: 713. StartAdd. starts: 8. total: 3713. avg: 464. min: 358. max: 520, index: 4 ContinueAdd. starts: 7. total: 183. avg: 26. min: 22. max: 37, index: 2 EndMotion. starts: 1. total: 421. avg: 421. StartDrag. starts: 1. total: 156. avg: 156. DuringDrag. starts: 1. total: 243. avg: 243. EndMotion. starts: 1. total: 349. avg: 349. StartDrag. starts: 1. total: 33. avg: 33. DuringDrag. starts: 2. total: 399. avg: 199. min: 196. max: 202, index: 1 EndMotion. starts: 1. total: 348. avg: 348. StartAdd. starts: 8. total: 2499. avg: 312. min: 203. max: 380, index: 8 ContinueAdd. starts: 7. total: 180. avg: 25. min: 21. max: 37, index: 1 EndMotion. starts: 1. total: 416. avg: 416. StartDrag. starts: 1. total: 62. avg: 62. DuringDrag. starts: 2. total: 383. avg: 191. min: 188. max: 195, index: 1 EndMotion. starts: 1. total: 337. avg: 337. StartDrag. starts: 1. total: 34. avg: 34. DuringDrag. starts: 2. total: 391. avg: 195. min: 195. max: 196, index: 1 EndMotion. starts: 1. total: 396. avg: 396. MakeCold. starts: 1. total: 1424. avg: 1424. MakeHot. starts: 1. total: 566. avg: 566. ToggleSlope. starts: 1. total: 844. avg: 844. ToggleSlope. starts: 1. total: 242. avg: 242. November 2, 1989, Bier, QueenFish. MakeAllHot. starts: 1. total: 1392. avg: 1392. MakeAllCold. starts: 1. total: 315. avg: 315. MakeAllHot. starts: 1. total: 237. avg: 237. ToggleSlope. starts: 1. total: 588. avg: 588. ToggleSlope. starts: 1. total: 678. avg: 678. StartAdd. starts: 8. total: 3217. avg: 402. min: 322. max: 477, index: 7 ContinueAdd. starts: 7. total: 199. avg: 28. min: 24. max: 40, index: 2 EndMotion. starts: 1. total: 570. avg: 570. StartDrag. starts: 1. total: 159. avg: 159. DuringDrag. starts: 1. total: 248. avg: 248. EndMotion. starts: 1. total: 447. avg: 447. StartDrag. starts: 1. total: 46. avg: 46. DuringDrag. starts: 2. total: 289. avg: 144. min: 143. max: 146, index: 2 EndMotion. starts: 1. total: 239. avg: 239. StartAdd. starts: 8. total: 2452. avg: 306. min: 206. max: 359, index: 8, overflows: 0 ContinueAdd. starts: 7. total: 210. avg: 30. min: 23. max: 44, index: 7, overflows: 0 EndMotion. starts: 1. total: 339. avg: 339. StartDrag. starts: 1. total: 72. avg: 72. DuringDrag. starts: 2. total: 380. avg: 190. min: 182. max: 197, index: 1 EndMotion. starts: 1. total: 420. avg: 420. StartDrag. starts: 1. total: 49. avg: 49. min: 49. max: 49, index: 1 DuringDrag. starts: 2. total: 288. avg: 144. min: 143. max: 145, index: 1 EndMotion. starts: 1. total: 313. avg: 313. MakeCold. starts: 1. total: 1294. avg: 1294. MakeHot. starts: 1. total: 522. avg: 522. ToggleSlope. starts: 1. total: 800. avg: 800. ToggleSlope. starts: 1. total: 210. avg: 210. April 18, 1990, Bier, Pippin MakeAllHot. n: 1. total: 2159. avg: 2159. range: [2159..2159], worst: 1 MakeAllCold. n: 1. total: 504. avg: 504. range: [504..504], worst: 1 MakeAllHot. n: 1. total: 479. avg: 479. range: [479..479], worst: 1 ToggleSlope. n: 1. total: 686. avg: 686. range: [686..686], worst: 1 ToggleSlope. n: 1. total: 934. avg: 934. range: [934..934], worst: 1 StartAdd. n: 8. total: 7083. avg: 885. range: [613..1654], worst: 1 ContinueAdd. n: 7. total: 477. avg: 68. range: [13..113], worst: 1 EndMotion. n: 1. total: 681. avg: 681. range: [681..681], worst: 1 StartDrag. n: 1. total: 308. avg: 308. range: [308..308], worst: 1 DuringDrag. n: 1. total: 708. avg: 708. range: [708..708], worst: 1 EndMotion. n: 1. total: 647. avg: 647. range: [647..647], worst: 1 StartDrag. n: 1. total: 68. avg: 68. range: [68..68], worst: 1 DuringDrag. n: 2. total: 1126. avg: 563. range: [541..585], worst: 1 EndMotion. n: 1. total: 626. avg: 626. range: [626..626], worst: 1 StartAdd. n: 8. total: 5825. avg: 728. range: [561..1114], worst: 1 ContinueAdd. n: 7. total: 214. avg: 30. range: [12..60], worst: 2 EndMotion. n: 1. total: 739. avg: 739. range: [739..739], worst: 1 StartDrag. n: 1. total: 107. avg: 107. range: [107..107], worst: 1 DuringDrag. n: 2. total: 1308. avg: 654. range: [558..749], worst: 1 EndMotion. n: 1. total: 980. avg: 980. range: [980..980], worst: 1 StartDrag. n: 1. total: 107. avg: 107. range: [107..107], worst: 1 DuringDrag. n: 2. total: 1203. avg: 601. range: [541..661], worst: 1 EndMotion. n: 1. total: 713. avg: 713. range: [713..713], worst: 1 MakeCold. n: 1. total: 1505. avg: 1505. range: [1505..1505], worst: 1 MakeHot. n: 1. total: 905. avg: 905. range: [905..905], worst: 1 ToggleSlope. n: 1. total: 972. avg: 972. range: [972..972], worst: 1 ToggleSlope. n: 1. total: 272. avg: 272. range: [272..272], worst: 1 Finished playback of /net/gharlane/cree/gargoyle/BagsTest.script in time (00:00:58) 5) Play BagsTest.script (on a Daybreak). Record all statistics. Test bags with lots of slope lines. April 17, 1988, Bier, on a Daybreak MakeAllHot. starts: 1. total: 5318. avg: 5318. MakeAllCold. starts: 1. total: 1048. avg: 1048. MakeAllHot. starts: 1. total: 916. avg: 916. ToggleSlope. starts: 1. total: 2471. avg: 2471. ToggleSlope. starts: 1. total: 2824. avg: 2824. StartAdd. starts: 8. total: 13339. avg: 1667. min: 1164. max: 1948, index: 7 ContinueAdd. starts: 7. total: 809. avg: 115. min: 75. max: 159, index: 7 EndMotion. starts: 1. total: 1147. avg: 1147. StartDrag. starts: 1. total: 659. avg: 659. DuringDrag. starts: 1. total: 954. avg: 954. EndMotion. starts: 1. total: 1104. avg: 1104. StartDrag. starts: 1. total: 148. avg: 148. DuringDrag. starts: 2. total: 1544. avg: 772. min: 770. max: 774, index: 2 EndMotion. starts: 1. total: 1019. avg: 1019. StartAdd. starts: 8. total: 8933. avg: 1116. min: 774. max: 1359, index: 8 ContinueAdd. starts: 7. total: 905. avg: 129. min: 93. max: 176, index: 3 EndMotion. starts: 1. total: 1059. avg: 1059. StartDrag. starts: 1. total: 259. avg: 259. DuringDrag. starts: 2. total: 1514. avg: 757. min: 742. max: 772, index: 1 EndMotion. starts: 1. total: 1065. avg: 1065. StartDrag. starts: 1. total: 129. avg: 129. DuringDrag. starts: 2. total: 1532. avg: 766. min: 759. max: 772, index: 1 EndMotion. starts: 1. total: 992. avg: 992. MakeCold. starts: 1. total: 5310. avg: 5310. MakeHot. starts: 1. total: 1904. avg: 1904. ToggleSlope. starts: 1. total: 3343. avg: 3343. ToggleSlope. starts: 1. total: 849. avg: 849. Refresh Time 1) Play RefreshPerformance.script. (windowhacker.gargoyle): PaintEntireScene. Using BuildPath for MaskStroke. starts: 1. avg: 3921 PaintEntireScene. Second Trial. starts: 1. avg: 3945 PaintEntireScene. Using MaskStroke for MaskStroke. starts: 1. avg: 3476 PaintEntireScene. Second Trial. starts: 1. avg: 3466, July 7, 1986, Bier on Langley A 13% difference. PaintEntireScene. Using PaintSingleStrokeTraj starts: 1. avg: 3133 PaintEntireScene. Second Trial. starts: 1. total: 3030 PaintEntireScene. avg: 3096, October 1, 1986, Bier, Independence March 11, 1987, Bier, QueenFish. Cedar7.0. PaintEntireScene. starts: 1. total: 2859. avg: 2859. February 9, 1988, Bier, QueenFish. Objectified trajectories. PaintEntireScene. starts: 1. total: 2702. PaintEntireScene. starts: 1. total: 2792. PaintEntireScene. starts: 1. total: 2954. PaintEntireScene. starts: 1. total: 2734. May 6, 1988, Bier, Taxco. Routine test. PaintEntireScene. starts: 1. total: 2655. July 6, 1988, Pier, Independence. New refresh package using DoWithBuffer. PaintEntireScene. starts: 1. total: 2751. PaintEntireScene. starts: 1. total: 2746. March 14, 1989, Bier, Queenfish. After making removing double-buffering from Refresh, and adding Turbo-trajectories. PaintEntireScene. starts: 1. total: 8326. PaintEntireScene. starts: 1. total: 8434. March 14, 1989, Bier, Queenfish. With turbo-trajectories turned off. PaintEntireScene. starts: 1. total: 2562. March 14, 1989, Bier, Queenfish. After increasing the size of the Imager.Object cache. PaintEntireScene. starts: 1. total: 1339. March 14, 1989, Bier, Queenfish. Using the new ImagerBitmapContext with hash tables. PaintEntireScene. starts: 1. total: 1331. PaintEntireScene. starts: 1. total: 1351. November 2, 1989, Bier, Queenfish. PaintEntireScene. starts: 1. total: 1426. avg: 1426. min: 1426. max: 1426, index: 1 PaintEntireScene. starts: 1. total: 1424. avg: 1424. min: 1424. max: 1424, index: 1 April 18, 1990, Bier, Pippin PaintEntireScene. n: 1. total: 1057. avg: 1057. range: [1057..1057], worst: 1 September 6, 1990 4:04:00 pm PDT, Pier, Pierrot. Released Imager and FP package. PaintEntireScene. n: 1. total: 1430. avg: 1430. range: [1430..1430], worst: 1 PaintEntireScene. n: 1. total: 1405. avg: 1405. range: [1405..1405], worst: 1 September 6, 1990 4:04:00 pm PDT, Pier, Pierrot. New Imager and FP package compiled with "f" switch. PaintEntireScene. n: 1. total: 1238. avg: 1238. range: [1238..1238], worst: 1 PaintEntireScene. n: 1. total: 1206. avg: 1206. range: [1206..1206], worst: 1 2) Load Halftones.gargoyle. Playback HalftonesRefresh.script PaintEntireScene. starts: 1. total: 13564. avg: 13564. January 7, 1987, Bier, QueenFish PaintEntireScene. starts: 1. total: 5497. avg: 5497. January 7, 1987, Bier, QueenFish. After speeding up the joint generator for trajectories. Compare this to 2710 msec with nothing selected. March 11, 1987, Bier, QueenFish. Cedar7.0. This must be an Imager speedup. PaintEntireScene. starts: 1. total: 2821. avg: 2821. min: 2821. max: 2821, index: 1 July 6, 1988. Pier, Independence. Script did nothing. No refresh command in script, version 18-Mar-88 15:49:25 PST. Fixed. Test with new refresh package using DoWithBuffer. PaintEntireScene. starts: 1. total: 2466. PaintEntireScene. starts: 1. total: 2433. March 14, 1989, Bier, QueenFish. With turbo trajectories on. Script repaired. PaintEntireScene. starts: 1. total: 3428. March 14, 1989, Bier, QueenFish. With turbo trajectories off. PaintEntireScene. starts: 1. total: 2834. November 2, 1989, Bier, QueenFish. PaintEntireScene. starts: 1. total: 3211. avg: 3211. PaintEntireScene. starts: 1. total: 3202. avg: 3202. April 18, 1990, Bier, Pippin PaintEntireScene. n: 1. total: 1344. avg: 1344 3) Obsolete (lost script). Play Penrose.script. Record the time for PaintEntireScene. Control panel at the top. March 14, 1989, Bier, Queenfish. Turbo trajectories. PaintEntireScene. starts: 1. total: 5711. PaintEntireScene. starts: 1. total: 5547. March 14, 1989, Bier, Queenfish. With turbo off. PaintEntireScene. starts: 1. total: 9007. PaintEntireScene. starts: 1. total: 9010. March 14, 1989, Bier, Queenfish. Turbo trajectories and using hashing for shape lookup. PaintEntireScene. starts: 1. total: 6173. PaintEntireScene. starts: 1. total: 5573. November 2, 1989, Bier, Queenfish PaintEntireScene. starts: 1. total: 5308. avg: 5308. PaintEntireScene. starts: 1. total: 5304. avg: 5304. 4) Play RefreshTest.script. Record all statistics. February 26, 1990, Bier, Pippin StartCaretPos. starts: 5. total: 3759. avg: 751. min: 656. max: 1035, index: 2 EndCaretPos. starts: 5. total: 5481. avg: 1096. min: 848. max: 1321, index: 4 DoWithBuffer. starts: 10. total: 5426. avg: 542. min: 450. max: 688, index: 8 DrawNoMap. starts: 30. total: 386. avg: 12. min: 0. max: 43, index: 22 TransferLayer. starts: 10. total: 1437. avg: 143. min: 119. max: 235, index: 8 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 6 StartCaretPos. starts: 5. total: 5456. avg: 1091. min: 897. max: 1716, index: 1 EndCaretPos. starts: 5. total: 7245. avg: 1449. min: 1349. max: 1604, index: 1 DoWithBuffer. starts: 10. total: 7435. avg: 743. min: 708. max: 777, index: 8 DrawNoMap. starts: 30. total: 459. avg: 15. min: 1. max: 67, index: 24 TransferLayer. starts: 10. total: 1330. avg: 133. min: 115. max: 170, index: 3 MaskLayer. starts: 10. total: 2315. avg: 231. min: 218. max: 247, index: 4 StartMotion. starts: 5. total: 998. avg: 199. min: 155. max: 303, index: 1 EndMotion. starts: 5. total: 6070. avg: 1214. min: 1086. max: 1664, index: 4 DoWithBuffer. starts: 10. total: 5414. avg: 541. min: 422. max: 682, index: 4 DrawNoMap. starts: 30. total: 482. avg: 16. min: 0. max: 75, index: 1 TransferLayer. starts: 10. total: 1407. avg: 140. min: 107. max: 256, index: 3 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 4 Finished playback of /net/chroma/bleu/gargoyle/RefreshTest.script in time (00:01:25) February 27, 1990, Bier, Pippin. After Russ improved MaskBitmap and I made Gargoyle more careful about the empty alignment layer. (1) Basic Caret Motion StartCaretPos. starts: 5. total: 2054. avg: 410. min: 328. max: 493, index: 5, overflows: 0 EndCaretPos. starts: 5. total: 3616. avg: 723. min: 594. max: 781, index: 4, overflows: 0 DoWithBuffer. starts: 10. total: 3494. avg: 349. min: 259. max: 433, index: 2, overflows: 0 DrawNoMap. starts: 30. total: 335. avg: 11. min: 0. max: 55, index: 6, overflows: 0 TransferLayer. starts: 10. total: 1193. avg: 119. min: 90. max: 164, index: 9, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 2, overflows: 0 (2) Caret and Anchor StartCaretPos. starts: 5. total: 2008. avg: 401. min: 299. max: 586, index: 3, overflows: 0 EndCaretPos. starts: 5. total: 3941. avg: 788. min: 762. max: 845, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 3320. avg: 332. min: 241. max: 398, index: 6, overflows: 0 DrawNoMap. starts: 30. total: 339. avg: 11. min: 0. max: 75, index: 15, overflows: 0 TransferLayer. starts: 10. total: 1142. avg: 114. min: 83. max: 150, index: 7, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 2, overflows: 0 (3) Interactive Translation StartMotion. starts: 5. total: 761. avg: 152. min: 123. max: 247, index: 3, overflows: 0 EndMotion. starts: 5. total: 4138. avg: 827. min: 697. max: 986, index: 1, overflows: 0 DoWithBuffer. starts: 10. total: 3849. avg: 384. min: 295. max: 482, index: 7, overflows: 0 DrawNoMap. starts: 30. total: 535. avg: 17. min: 0. max: 128, index: 19, overflows: 0 TransferLayer. starts: 10. total: 1301. avg: 130. min: 91. max: 163, index: 3, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 4, overflows: 0 Finished playback of /net/chroma/bleu/gargoyle/RefreshTest.script in time (00:00:42) March 8, 1990, Bier, Pippin. After Russ improved RasterOp. (1) Basic Caret Motion StartCaretPos. starts: 5. total: 1814. avg: 362. min: 278. max: 467, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 3444. avg: 688. min: 620. max: 767, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 2906. avg: 290. min: 222. max: 398, index: 1, overflows: 0 DrawNoMap. starts: 30. total: 291. avg: 9. min: 0. max: 45, index: 3, overflows: 0 TransferLayer. starts: 10. total: 836. avg: 83. min: 65. max: 107, index: 5, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 1, overflows: 0 (2) Caret and Alignments StartCaretPos. starts: 5. total: 1739. avg: 347. min: 279. max: 492, index: 4, overflows: 0 EndCaretPos. starts: 5. total: 3610. avg: 722. min: 649. max: 841, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 3146. avg: 314. min: 222. max: 414, index: 6, overflows: 0 DrawNoMap. starts: 30. total: 358. avg: 11. min: 0. max: 47, index: 18, overflows: 0 TransferLayer. starts: 10. total: 845. avg: 84. min: 61. max: 108, index: 2, overflows: 0 MaskLayer. starts: 10. total: 221. avg: 22. min: 15. max: 32, index: 6, overflows: 0 (3) Interactive Translation StartMotion. starts: 5. total: 1058. avg: 211. min: 163. max: 283, index: 3, overflows: 0 EndMotion. starts: 5. total: 4018. avg: 803. min: 655. max: 967, index: 5, overflows: 0 DoWithBuffer. starts: 10. total: 3370. avg: 337. min: 270. max: 512, index: 7, overflows: 0 DrawNoMap. starts: 30. total: 319. avg: 10. min: 0. max: 44, index: 19, overflows: 0 TransferLayer. starts: 10. total: 1021. avg: 102. min: 62. max: 178, index: 7, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 3, overflows: 0 Finished playback of /net/chroma/bleu/gargoyle/RefreshTest.script in time (00:00:42) March 16, 1990, Bier, Pippin. With changeRect BufferedRefresh. (1) Basic Caret Motion StartCaretPos. starts: 5. total: 1075. avg: 215. min: 85. max: 430, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 4756. avg: 951. min: 928. max: 969, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 2584. avg: 258. min: 38. max: 467, index: 8, overflows: 0 DrawNoMap. starts: 30. total: 497. avg: 16. min: 2. max: 112, index: 15, overflows: 0 TransferLayer. starts: 10. total: 690. avg: 69. min: 6. max: 147, index: 6, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 3, overflows: 0 (2) Caret and Alignments StartCaretPos. starts: 5. total: 2817. avg: 563. min: 421. max: 703, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 4915. avg: 983. min: 904. max: 1037, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 3995. avg: 399. min: 301. max: 509, index: 6, overflows: 0 DrawNoMap. starts: 30. total: 500. avg: 16. min: 2. max: 61, index: 3, overflows: 0 TransferLayer. starts: 10. total: 1042. avg: 104. min: 80. max: 138, index: 4, overflows: 0 MaskLayer. starts: 10. total: 250. avg: 25. min: 17. max: 43, index: 4, overflows: 0 (3) Interactive Translation StartMotion. starts: 5. total: 867. avg: 173. min: 153. max: 196, index: 2, overflows: 0 EndMotion. starts: 5. total: 5956. avg: 1191. min: 1067. max: 1483, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 5004. avg: 500. min: 370. max: 714, index: 10, overflows: 0 DrawNoMap. starts: 30. total: 687. avg: 22. min: 2. max: 88, index: 1, overflows: 0 TransferLayer. starts: 10. total: 1706. avg: 170. min: 136. max: 266, index: 5, overflows: 0 MaskLayer. starts: 10. total: 1. avg: 0. min: 0. max: 0, index: 9, overflows: 0 Finished playback of /net/gharlane/cree/gargoyle/RefreshTest.script in time (00:00:53) February 27, 1990, Bier, Ark-Royal (Dorado, black-and-white) (1) Basic Caret Motion StartCaretPos. starts: 5. total: 480. avg: 96. min: 94. max: 102, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 585. avg: 117. min: 116. max: 117, index: 4, overflows: 0 DoWithBuffer. starts: 10. total: 578. avg: 57. min: 51. max: 67, index: 6, overflows: 0 DrawNoMap. starts: 30. total: 159. avg: 5. min: 0. max: 14, index: 15, overflows: 0 TransferLayer. starts: 10. total: 166. avg: 16. min: 12. max: 28, index: 8, overflows: 0 MaskLayer. starts: 10. total: 0. avg: 0. min: 0. max: 0, index: 2, overflows: 0 (2) Caret and Anchor StartCaretPos. starts: 5. total: 559. avg: 111. min: 104. max: 127, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 621. avg: 124. min: 120. max: 130, index: 5, overflows: 0 DoWithBuffer. starts: 10. total: 650. avg: 65. min: 61. max: 92, index: 1, overflows: 0 DrawNoMap. starts: 30. total: 265. avg: 8. min: 0. max: 25, index: 12, overflows: 0 TransferLayer. starts: 10. total: 158. avg: 15. min: 12. max: 43, index: 1, overflows: 0 MaskLayer. starts: 10. total: 0. avg: 0. min: 0. max: 0, index: 1, overflows: 0 (3) Interactive Translation StartMotion. starts: 5. total: 378. avg: 75. min: 62. max: 95, index: 4, overflows: 0 EndMotion. starts: 5. total: 1071. avg: 214. min: 190. max: 223, index: 1, overflows: 0 DoWithBuffer. starts: 10. total: 766. avg: 76. min: 59. max: 94, index: 1, overflows: 0 DrawNoMap. starts: 30. total: 408. avg: 13. min: 0. max: 42, index: 25, overflows: 0 TransferLayer. starts: 10. total: 127. avg: 12. min: 12. max: 13, index: 2, overflows: 0 MaskLayer. starts: 10. total: 0. avg: 0. min: 0. max: 0, index: 1, overflows: 0 Finished playback of ///Users/bier.pa/Gargoyle/RefreshTest.script in time (00:00:11) February 27, 1990, Bier, Ark-Royal (Dorado, black-and-white), after changing part 2. (1) Basic Caret Motion StartCaretPos. starts: 5. total: 505. avg: 101. min: 96. max: 102, index: 2, overflows: 0 EndCaretPos. starts: 5. total: 551. avg: 110. min: 109. max: 110, index: 2, overflows: 0 DoWithBuffer. starts: 10. total: 611. avg: 61. min: 51. max: 67, index: 3, overflows: 0 DrawNoMap. starts: 30. total: 191. avg: 6. min: 0. max: 29, index: 21, overflows: 0 TransferLayer. starts: 10. total: 151. avg: 15. min: 12. max: 28, index: 5, overflows: 0 MaskLayer. starts: 10. total: 0. avg: 0. min: 0. max: 0, index: 1, overflows: 0 (2) Caret and Alignments StartCaretPos. starts: 5. total: 619. avg: 123. min: 118. max: 131, index: 1, overflows: 0 EndCaretPos. starts: 5. total: 737. avg: 147. min: 133. max: 180, index: 3, overflows: 0 DoWithBuffer. starts: 10. total: 794. avg: 79. min: 74. max: 90, index: 3, overflows: 0 DrawNoMap. starts: 30. total: 284. avg: 9. min: 0. max: 33, index: 30, overflows: 0 TransferLayer. starts: 10. total: 153. avg: 15. min: 12. max: 28, index: 3, overflows: 0 MaskLayer. starts: 10. total: 129. avg: 12. min: 12. max: 13, index: 1, overflows: 0 (3) Interactive Translation StartMotion. starts: 5. total: 489. avg: 97. min: 66. max: 136, index: 3, overflows: 0 EndMotion. starts: 5. total: 1027. avg: 205. min: 168. max: 233, index: 1, overflows: 0 DoWithBuffer. starts: 10. total: 766. avg: 76. min: 59. max: 94, index: 5, overflows: 0 DrawNoMap. starts: 30. total: 408. avg: 13. min: 0. max: 43, index: 25, overflows: 0 TransferLayer. starts: 10. total: 128. avg: 12. min: 12. max: 13, index: 3, overflows: 0 MaskLayer. starts: 10. total: 0. avg: 0. min: 0. max: 0, index: 2, overflows: 0 Finished playback of /gargoyle/Benchmark/RefreshTest.script in time (00:00:11) April 16, 1990, Bier, Pippin. After creating the new CodeTimer. Nitro off. (1) Basic Caret Motion HandleGuarded. n: 15. total: 4989. avg: 332. range: [0..831], worst: 3 EndCaretPos. n: 5. total: 3803. avg: 760. range: [678..830], worst: 1 RestoreScreenAndInvariants. n: 5. total: 1843. avg: 368. range: [351..389], worst: 2 PaintViewer. n: 5. total: 1838. avg: 367. range: [350..389], worst: 2 DoWithBuffer. n: 5. total: 1620. avg: 324. range: [304..343], worst: 4 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 499. avg: 24. range: [2..85], worst: 13 RefreshCaretPlane. n: 5. total: 129. avg: 25. range: [18..42], worst: 5 RefreshCPFeedback. n: 5. total: 7. avg: 1. range: [1..1], worst: 2 RefreshOverlay. n: 5. total: 7. avg: 1. range: [1..1], worst: 1 RefreshBackground. n: 5. total: 68. avg: 13. range: [3..34], worst: 4 LayerWhite. n: 5. total: 196. avg: 39. range: [35..46], worst: 5 MultiMap. n: 5. total: 9. avg: 1. range: [0..3], worst: 3 StartCaretPos. n: 5. total: 1153. avg: 230. range: [129..328], worst: 3 DuringCaretPos. n: 5. total: 976. avg: 195. range: [115..287], worst: 2 RestoreScreenAndInvariants. n: 5. total: 559. avg: 111. range: [67..163], worst: 2 PaintViewer. n: 5. total: 556. avg: 111. range: [67..162], worst: 2 DoWithBuffer. n: 5. total: 385. avg: 77. range: [37..111], worst: 1 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 264. avg: 13. range: [2..57], worst: 8 RefreshCaretPlane. n: 5. total: 111. avg: 22. range: [8..54], worst: 2 RefreshCPFeedback. n: 5. total: 1. avg: 0. range: [0..0], worst: 1 RefreshOverlay. n: 5. total: 6. avg: 1. range: [0..2], worst: 1 RefreshBackground. n: 5. total: 15. avg: 3. range: [1..9], worst: 3 LayerWhite. n: 5. total: 54. avg: 10. range: [1..42], worst: 1 MultiMap. n: 5. total: 7. avg: 1. range: [0..2], worst: 1 SawTextFinish. n: 5. total: 2. avg: 0. range: [0..0], worst: 2 (2) Caret and Alignments HandleGuarded. n: 15. total: 6665. avg: 444. range: [0..866], worst: 3 EndCaretPos. n: 5. total: 4202. avg: 840. range: [807..865], worst: 1 RestoreScreenAndInvariants. n: 5. total: 2137. avg: 427. range: [415..451], worst: 2 PaintViewer. n: 5. total: 2127. avg: 425. range: [414..451], worst: 2 DoWithBuffer. n: 5. total: 1903. avg: 380. range: [361..416], worst: 2 MaskLayer. n: 5. total: 171. avg: 34. range: [19..77], worst: 2 DrawNoMap. n: 20. total: 700. avg: 35. range: [2..101], worst: 9 RefreshCaretPlane. n: 5. total: 193. avg: 38. range: [33..43], worst: 1 RefreshCPFeedback. n: 5. total: 9. avg: 1. range: [1..3], worst: 2 RefreshOverlay. n: 5. total: 55. avg: 11. range: [1..28], worst: 1 RefreshBackground. n: 5. total: 70. avg: 14. range: [6..28], worst: 3 LayerWhite. n: 5. total: 238. avg: 47. range: [36..63], worst: 2 MultiMap. n: 5. total: 6. avg: 1. range: [0..2], worst: 2 StartCaretPos. n: 5. total: 2409. avg: 481. range: [406..573], worst: 4 DuringCaretPos. n: 5. total: 2339. avg: 467. range: [395..557], worst: 4 RestoreScreenAndInvariants. n: 5. total: 1955. avg: 391. range: [343..483], worst: 4 PaintViewer. n: 5. total: 1952. avg: 390. range: [342..483], worst: 4 DoWithBuffer. n: 5. total: 1790. avg: 358. range: [287..452], worst: 4 MaskLayer. n: 5. total: 167. avg: 33. range: [19..71], worst: 5 DrawNoMap. n: 20. total: 679. avg: 33. range: [2..108], worst: 13 RefreshCaretPlane. n: 5. total: 204. avg: 40. range: [19..54], worst: 2 RefreshCPFeedback. n: 5. total: 10. avg: 2. range: [0..3], worst: 4 RefreshOverlay. n: 5. total: 18. avg: 3. range: [0..14], worst: 3 RefreshBackground. n: 5. total: 40. avg: 8. range: [2..12], worst: 1 LayerWhite. n: 5. total: 263. avg: 52. range: [34..86], worst: 4 MultiMap. n: 5. total: 9. avg: 1. range: [0..2], worst: 2 SawTextFinish. n: 5. total: 7. avg: 1. range: [0..7], worst: 3 (3) Interactive Translation HandleGuarded. n: 15. total: 8185. avg: 545. range: [0..993], worst: 6 EndMotion. n: 5. total: 4756. avg: 951. range: [918..991], worst: 2 RestoreScreenAndInvariants. n: 5. total: 3420. avg: 684. range: [529..944], worst: 2 PaintViewer. n: 5. total: 3232. avg: 646. range: [481..906], worst: 2 DoWithBuffer. n: 5. total: 2403. avg: 480. range: [402..665], worst: 2 MaskLayer. n: 5. total: 16. avg: 3. range: [0..15], worst: 3 DrawNoMap. n: 20. total: 1262. avg: 63. range: [3..345], worst: 5 RefreshCaretPlane. n: 5. total: 58. avg: 11. range: [9..16], worst: 2 RefreshCPFeedback. n: 5. total: 43. avg: 8. range: [7..10], worst: 3 RefreshOverlay. n: 5. total: 13. avg: 2. range: [1..6], worst: 4 RefreshBackground. n: 5. total: 822. avg: 164. range: [131..255], worst: 2 LayerWhite. n: 5. total: 224. avg: 44. range: [36..59], worst: 2 RepairBackgroundInBoundBox. n: 5. total: 4. avg: 0. range: [0..1], worst: 4 DynamicToStaticBags. n: 5. total: 9. avg: 1. range: [0..3], worst: 1 DuringDrag. n: 5. total: 2796. avg: 559. range: [446..678], worst: 1 RestoreScreenAndInvariants. n: 5. total: 2334. avg: 466. range: [369..549], worst: 1 PaintViewer. n: 5. total: 2327. avg: 465. range: [369..549], worst: 1 DoWithBuffer. n: 5. total: 2195. avg: 439. range: [355..521], worst: 1 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 1066. avg: 53. range: [2..184], worst: 17 RefreshCaretPlane. n: 5. total: 55. avg: 11. range: [8..16], worst: 1 RefreshCPFeedback. n: 5. total: 3. avg: 0. range: [0..1], worst: 3 RefreshOverlay. n: 5. total: 136. avg: 27. range: [22..30], worst: 1 RefreshBackground. n: 5. total: 588. avg: 117. range: [104..128], worst: 5 LayerWhite. n: 5. total: 207. avg: 41. range: [36..47], worst: 3 MultiMap. n: 5. total: 2. avg: 0. range: [0..0], worst: 3 StartDrag. n: 5. total: 562. avg: 112. range: [71..187], worst: 3 StartMotion. n: 5. total: 560. avg: 112. range: [71..187], worst: 3 StaticToDynamicBags. n: 5. total: 23. avg: 4. range: [4..5], worst: 3 RepairBackgroundInBoundBox. n: 5. total: 29. avg: 5. range: [2..12], worst: 4 SawTextFinish. n: 5. total: 1. avg: 0. range: [0..0], worst: 1 Finished playback of /net/gharlane/cree/gargoyle/RefreshTest.script in time (00:00:48) April 16, 1990, Bier, Pippin. Nitro ON. (1) Basic Caret Motion HandleGuarded. n: 15. total: 1775. avg: 118. range: [0..352], worst: 3 EndCaretPos. n: 5. total: 1331. avg: 266. range: [215..352], worst: 1 RestoreScreenAndInvariants. n: 5. total: 1085. avg: 217. range: [182..291], worst: 1 PaintViewer. n: 5. total: 1083. avg: 216. range: [182..291], worst: 1 DoWithBuffer. n: 5. total: 1056. avg: 211. range: [177..284], worst: 1 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 382. avg: 19. range: [1..76], worst: 1 RefreshCaretPlane. n: 5. total: 84. avg: 16. range: [8..34], worst: 1 RefreshCPFeedback. n: 5. total: 1. avg: 0. range: [0..0], worst: 4 RefreshOverlay. n: 5. total: 1. avg: 0. range: [0..0], worst: 5 RefreshBackground. n: 5. total: 9. avg: 1. range: [1..3], worst: 4 LayerWhite. n: 5. total: 211. avg: 42. range: [34..71], worst: 1 MultiMap. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 StartCaretPos. n: 5. total: 434. avg: 86. range: [68..104], worst: 1 DuringCaretPos. n: 5. total: 420. avg: 84. range: [66..101], worst: 1 RestoreScreenAndInvariants. n: 5. total: 263. avg: 52. range: [43..75], worst: 1 PaintViewer. n: 5. total: 261. avg: 52. range: [42..75], worst: 1 DoWithBuffer. n: 5. total: 212. avg: 42. range: [24..66], worst: 1 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 134. avg: 6. range: [1..24], worst: 1 RefreshCaretPlane. n: 5. total: 45. avg: 9. range: [8..11], worst: 1 RefreshCPFeedback. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 RefreshOverlay. n: 5. total: 1. avg: 0. range: [0..0], worst: 3 RefreshBackground. n: 5. total: 13. avg: 2. range: [1..8], worst: 3 LayerWhite. n: 5. total: 18. avg: 3. range: [1..7], worst: 1 MultiMap. n: 5. total: 1. avg: 0. range: [0..0], worst: 2 SawTextFinish. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 (2) Caret and Alignments HandleGuarded. n: 15. total: 2464. avg: 164. range: [0..282], worst: 6 EndCaretPos. n: 5. total: 1263. avg: 252. range: [234..282], worst: 2 RestoreScreenAndInvariants. n: 5. total: 1091. avg: 218. range: [201..250], worst: 2 PaintViewer. n: 5. total: 1089. avg: 217. range: [201..249], worst: 2 DoWithBuffer. n: 5. total: 1056. avg: 211. range: [196..243], worst: 2 MaskLayer. n: 5. total: 96. avg: 19. range: [16..23], worst: 2 DrawNoMap. n: 20. total: 344. avg: 17. range: [1..46], worst: 8 RefreshCaretPlane. n: 5. total: 102. avg: 20. range: [13..38], worst: 2 RefreshCPFeedback. n: 5. total: 1. avg: 0. range: [0..0], worst: 5 RefreshOverlay. n: 5. total: 1. avg: 0. range: [0..0], worst: 2 RefreshBackground. n: 5. total: 6. avg: 1. range: [1..1], worst: 5 LayerWhite. n: 5. total: 181. avg: 36. range: [34..38], worst: 4 MultiMap. n: 5. total: 1. avg: 0. range: [0..0], worst: 2 StartCaretPos. n: 5. total: 1194. avg: 238. range: [228..257], worst: 3 DuringCaretPos. n: 5. total: 1182. avg: 236. range: [226..253], worst: 3 RestoreScreenAndInvariants. n: 5. total: 1040. avg: 208. range: [200..228], worst: 3 PaintViewer. n: 5. total: 1037. avg: 207. range: [199..228], worst: 3 DoWithBuffer. n: 5. total: 1012. avg: 202. range: [194..223], worst: 3 MaskLayer. n: 5. total: 80. avg: 16. range: [15..16], worst: 5 DrawNoMap. n: 20. total: 328. avg: 16. range: [1..57], worst: 9 RefreshCaretPlane. n: 5. total: 70. avg: 14. range: [13..14], worst: 2 RefreshCPFeedback. n: 5. total: 1. avg: 0. range: [0..0], worst: 3 RefreshOverlay. n: 5. total: 1. avg: 0. range: [0..0], worst: 1 RefreshBackground. n: 5. total: 7. avg: 1. range: [1..2], worst: 5 LayerWhite. n: 5. total: 207. avg: 41. range: [34..53], worst: 3 MultiMap. n: 5. total: 0. avg: 0. range: [0..0], worst: 3 SawTextFinish. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 (3) Interactive Translation HandleGuarded. n: 15. total: 3785. avg: 252. range: [0..447], worst: 13 EndMotion. n: 5. total: 1918. avg: 383. range: [361..417], worst: 3 RestoreScreenAndInvariants. n: 5. total: 1782. avg: 356. range: [347..360], worst: 4 PaintViewer. n: 5. total: 1491. avg: 298. range: [290..315], worst: 5 DoWithBuffer. n: 5. total: 1450. avg: 290. range: [284..298], worst: 5 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 5 DrawNoMap. n: 20. total: 859. avg: 42. range: [2..154], worst: 17 RefreshCaretPlane. n: 5. total: 41. avg: 8. range: [7..11], worst: 4 RefreshCPFeedback. n: 5. total: 31. avg: 6. range: [5..10], worst: 4 RefreshOverlay. n: 5. total: 1. avg: 0. range: [0..0], worst: 1 RefreshBackground. n: 5. total: 555. avg: 111. range: [108..116], worst: 5 LayerWhite. n: 5. total: 187. avg: 37. range: [35..39], worst: 1 RepairBackgroundInBoundBox. n: 5. total: 0. avg: 0. range: [0..0], worst: 5 DynamicToStaticBags. n: 5. total: 1. avg: 0. range: [0..0], worst: 3 DuringDrag. n: 5. total: 1701. avg: 340. range: [310..407], worst: 5 RestoreScreenAndInvariants. n: 5. total: 1554. avg: 310. range: [286..361], worst: 5 PaintViewer. n: 5. total: 1551. avg: 310. range: [285..361], worst: 5 DoWithBuffer. n: 5. total: 1512. avg: 302. range: [281..351], worst: 5 MaskLayer. n: 5. total: 0. avg: 0. range: [0..0], worst: 1 DrawNoMap. n: 20. total: 889. avg: 44. range: [2..163], worst: 17 RefreshCaretPlane. n: 5. total: 43. avg: 8. range: [7..11], worst: 4 RefreshCPFeedback. n: 5. total: 1. avg: 0. range: [0..0], worst: 4 RefreshOverlay. n: 5. total: 112. avg: 22. range: [20..29], worst: 5 RefreshBackground. n: 5. total: 486. avg: 97. range: [88..125], worst: 5 LayerWhite. n: 5. total: 183. avg: 36. range: [34..38], worst: 2 MultiMap. n: 5. total: 1. avg: 0. range: [0..0], worst: 5 StartDrag. n: 5. total: 155. avg: 31. range: [12..47], worst: 4 StartMotion. n: 5. total: 153. avg: 30. range: [12..47], worst: 4 StaticToDynamicBags. n: 5. total: 22. avg: 4. range: [2..9], worst: 5 RepairBackgroundInBoundBox. n: 5. total: 1. avg: 0. range: [0..0], worst: 5 SawTextFinish. n: 5. total: 0. avg: 0. range: [0..0], worst: 5 Finished playback of /net/gharlane/cree/gargoyle/RefreshTest.script in time (00:00:19) 5) Play RefreshEightSquares.script. Record PaintEntireScene time. March 8, 1990, Bier, Pippin. Michael Plass claims there is a known bug with rectangle refresh. Pippin was not particularly fresh (early results were 1600 ms). PaintEntireScene. starts: 3. total: 5222. avg: 1740. min: 1630. max: 1956, index: 3 March Sometime, Bier, Pippin. With Michael's Faster dither context. PaintEntireScene. average was about: 1000 April 16, 1990, Bier, Pippin. With Frank Crow's GX accelerators. PaintEntireScene. n: 3. total: 829. avg: 276. range: [272..282], worst: 1 6) Load GridCircles.gargoyle. Select the lower right hand circle. Change its color. Record the RestoreScreenAndInvariants statistics: September 5, 1990, Bier, Arpeggio, SS1+, SunOS4.0.3. Released Imager and FP package. RestoreScreenAndInvariants. n: 1. total: 12815. avg: 12815. range: [12815..12815], worst: 1 PaintViewer. n: 1. total: 12773. avg: 12773. range: [12773..12773], worst: 1 NoBuffer. n: 1. total: 6155. avg: 6155. range: [6155..6155], worst: 1 DrawIgnoreMap. n: 5. total: 6149. avg: 1229. range: [5..6070], worst: 1 RefreshCaretPlane. n: 1. total: 35. avg: 35. range: [35..35], worst: 1 RefreshForeground. n: 1. total: 3. avg: 3. range: [3..3], worst: 1 RefreshCPFeedback. n: 1. total: 21. avg: 21. range: [21..21], worst: 1 RefreshOverlay. n: 1. total: 3. avg: 3. range: [3..3], worst: 1 RefreshBackground. n: 1. total: 6055. avg: 6055. range: [6055..6055], worst: 1 LayerWhite. n: 1. total: 5. avg: 5. range: [5..5], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 6579. avg: 6579. range: [6579..6579], worst: 1 RawInputNotify. n: 1. total: 7. avg: 7. range: [7..7], worst: 1 RestoreScreenAndInvariants. n: 1. total: 12413. avg: 12413. range: [12413..12413], worst: 1 PaintViewer. n: 1. total: 12377. avg: 12377. range: [12377..12377], worst: 1 NoBuffer. n: 1. total: 5979. avg: 5979. range: [5979..5979], worst: 1 DrawIgnoreMap. n: 5. total: 5974. avg: 1194. range: [6..5891], worst: 1 RefreshCaretPlane. n: 1. total: 38. avg: 38. range: [38..38], worst: 1 RefreshForeground. n: 1. total: 3. avg: 3. range: [3..3], worst: 1 RefreshCPFeedback. n: 1. total: 23. avg: 23. range: [23..23], worst: 1 RefreshOverlay. n: 1. total: 4. avg: 4. range: [4..4], worst: 1 RefreshBackground. n: 1. total: 5877. avg: 5877. range: [5877..5877], worst: 1 LayerWhite. n: 1. total: 4. avg: 4. range: [4..4], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 6370. avg: 6370. range: [6370..6370], worst: 1 September 6, 1990, Pier, Pierrot, SS1, SunOS4.1.0. Imager and FP recompiled with "f" switch RestoreScreenAndInvariants. n: 1. total: 9871. avg: 9871. range: [9871..9871], worst: 1 PaintViewer. n: 1. total: 9867. avg: 9867. range: [9867..9867], worst: 1 NoBuffer. n: 1. total: 4793. avg: 4793. range: [4793..4793], worst: 1 DrawIgnoreMap. n: 5. total: 4791. avg: 958. range: [3..4759], worst: 1 RefreshCaretPlane. n: 1. total: 7. avg: 7. range: [7..7], worst: 1 RefreshForeground. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RefreshCPFeedback. n: 1. total: 12. avg: 12. range: [12..12], worst: 1 RefreshOverlay. n: 1. total: 1. avg: 1. range: [1..1], worst: 1 RefreshBackground. n: 1. total: 4756. avg: 4756. range: [4756..4756], worst: 1 LayerWhite. n: 1. total: 1. avg: 1. range: [1..1], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 5068. avg: 5068. range: [5068..5068], worst: 1 RestoreScreenAndInvariants. n: 1. total: 4710. avg: 4710. range: [4710..4710], worst: 1 PaintViewer. n: 1. total: 4679. avg: 4679. range: [4679..4679], worst: 1 NoBuffer. n: 1. total: 4672. avg: 4672. range: [4672..4672], worst: 1 DrawIgnoreMap. n: 5. total: 4670. avg: 934. range: [2..4643], worst: 1 RefreshCaretPlane. n: 1. total: 7. avg: 7. range: [7..7], worst: 1 RefreshForeground. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RefreshCPFeedback. n: 1. total: 10. avg: 10. range: [10..10], worst: 1 RefreshOverlay. n: 1. total: 1. avg: 1. range: [1..1], worst: 1 RefreshBackground. n: 1. total: 4640. avg: 4640. range: [4640..4640], worst: 1 LayerWhite. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 September 6, 1990, Pier, Pierrot, SS1, SunOS4.1.0. Released Imager and FP without "f" switch RestoreScreenAndInvariants. n: 1. total: 8447. avg: 8447. range: [8447..8447], worst: 1 PaintViewer. n: 1. total: 8429. avg: 8429. range: [8429..8429], worst: 1 NoBuffer. n: 1. total: 8423. avg: 8423. range: [8423..8423], worst: 1 DrawIgnoreMap. n: 5. total: 8422. avg: 1684. range: [2..8391], worst: 1 RefreshCaretPlane. n: 1. total: 10. avg: 10. range: [10..10], worst: 1 RefreshForeground. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RefreshCPFeedback. n: 1. total: 10. avg: 10. range: [10..10], worst: 1 RefreshOverlay. n: 1. total: 1. avg: 1. range: [1..1], worst: 1 RefreshBackground. n: 1. total: 8388. avg: 8388. range: [8388..8388], worst: 1 LayerWhite. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RestoreScreenAndInvariants. n: 1. total: 7628. avg: 7628. range: [7628..7628], worst: 1 PaintViewer. n: 1. total: 7598. avg: 7598. range: [7598..7598], worst: 1 NoBuffer. n: 1. total: 7592. avg: 7592. range: [7592..7592], worst: 1 DrawIgnoreMap. n: 5. total: 7591. avg: 1518. range: [2..7554], worst: 1 RefreshCaretPlane. n: 1. total: 13. avg: 13. range: [13..13], worst: 1 RefreshForeground. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RefreshCPFeedback. n: 1. total: 12. avg: 12. range: [12..12], worst: 1 RefreshOverlay. n: 1. total: 1. avg: 1. range: [1..1], worst: 1 RefreshBackground. n: 1. total: 7550. avg: 7550. range: [7550..7550], worst: 1 LayerWhite. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 RepairBackgroundInBoundBox. n: 1. total: 0. avg: 0. range: [0..0], worst: 1 Refresh of Alignment Lines 1) Bad benchmark. It would be better to time GGAlignImpl.DrawFeatureList. Playback BuiltInFilters.script. Record the time it takes to finish the playback. 14.8 seconds, January 14, 1987, Pier, Independence 7 seconds, January 14, 1987, Bier, Queenfish 10 seconds, Cedar 7.0, March 3, 1987, Bier, Queenfish 10 seconds, March 11, 1987, Bier, Queenfish 11 seconds, March 24, 1987, Bier, Queenfish. Using FunctionCache for lines is probably slowing it down a bit. It will be better when we use a hash table instead of FunctionCache. 11 seconds, March 24, 1987, Pier, Independence. 9 seconds, November 2, 1989, Bier, Queenfish 9 seconds, November 2, 1989, Bier, Queenfish 22 seconds, April 18, 1990, Bier, Pippin. Hit Testing Performance improvements October 15, 1986 6:55:57 pm PDT, Pier, Independence MergeIPEditable the first page of GGRefreshImpl.interpress, made via % TiogaToInterpress GGRefreshImpl.mesa order of 100 text strings in picture. Procedure: Typescript; ResetStats; TestGravity; PerformanceStatistics Gargoyle of 08-Oct-86 17:35:37 PDT Tested 125 total points. 57 unihits. 57 multihits. 0 differences SetBagsForAction. starts: 1. total: 37. avg: 37. min: 37. max: 37, index: 1, overflows: 0 MultiMap. starts: 125. total: 97755. avg: 782. min: 526. max: 986, index: 99, overflows: 0 UniMap. starts: 125. total: 97537. avg: 780. min: 516. max: 937, index: 118, overflows: 0 AFTER BOUNDING BOX HIT TESTING ADDED TO SLICES! Gargoyle of October 15, 1986 6:20:05 pm PDT Tested 1001 total points. 558 unihits. 558 multihits. 0 differences SetBagsForAction. starts: 1. total: 39. avg: 39. min: 39. max: 39, index: 1, overflows: 0 MultiMap. starts: 1001. total: 32968. avg: 32. min: 19. max: 149, index: 712, overflows: 0 UniMap. starts: 1001. total: 28580. avg: 28. min: 16. max: 120, index: 309, overflows: 0 Gargoyle of January 14, 1988 1:26:14 pm PST Tested 400 total points. 217 multihits MultiMap. starts: 400. total: 25785. avg: 64. min: 40. max: 206, index: 175. Probably due to normal calculations. SetBagsForAction starts: 0 Get Performance 1) Create Typescript. Get HackerHouse.gargoyle. Restore. Record the time it takes. 28 seconds, November 26, 1986, Bier, Queenfish. 22 seconds, November 26, 1986, Bier, Queenfish. After preallocating some RIS and TIS streams for GGParseIn.ReadReal and GGParseIn.ReadColor. 23 seconds, January 13, 1987, Bier, Queenfish 22 seconds, January 13, 1987, Bier, Queenfish. After optimizing line segment colors. 18 seconds, January 19, 1987, Bier, Queenfish. After using Convert.RealFromRope. 19 seconds, January 27, 1987, Bier, Queenfish. After adding CMY color info and making TRUE => T. 24 seconds, May 14, 1987, Bier, Queenfish. Outlines are slices. 22 seconds, May 14, 1987 1:02:30 pm PDT, Bier, Queenfish. Shorter Slice headers. 20 seconds, March 13, 1988, Bier, Queenfish. Routine benchmark. 19 seconds, March 13, 1988, Bier, Queenfish. After putting in code to build the TiogaButtons all at once. (This time is for a new version of HackerHouse, dated March 13). March 14, 1988, Bier, QueenFish 17 seconds. After tuning ReadBlank and ReadReal a bit. ReadOptions. starts: 1. total: 573. avg: 573. Restore. starts: 1. total: 30242. avg: 30242. November 2, 1989, Bier, QueenFish 18 seconds. ReadOptions. starts: 1. total: 733. avg: 733. April 18, 1990, Bier, Pippin 22 seconds (some font substitutions) ReadOptions. n: 1. total: 546. March 18, 1992, bier, duet (open /net/lane/kipling/gargoyle/HackerHouse.gargoyle) 17 seconds (first load) 9 seconds (second load) 8 seconds (third load, codetimeron) 0.ReadOptions. n: 1. total: 4501. 8 seconds (fourth load, codetimeron) 0.ReadOptions. n: 1. total: 4122. May 21, 1992, bier. duet. optimized code. After Ken's work on bounding boxes. 18 seconds (first load) 11 seconds (second load) 8 seconds (third load) May 21, 1992, bier, duet. Unoptimized. After adding AlignmentsVisible routine. 12 seconds (first load) 10 seconds (second load) 9 seconds (third load) May 26, 1992, bier. duet. Optimized. 9 seconds 17 seconds (second load, garbage collect?) 8 seconds (third load) 7 seconds (fourth load) 2) Create Typescript. Get Christmas86.gargoyle. Restore. Record the time it takes. 24 seconds. Bier, January 13, 1987, Queenfish 19 seconds, Bier, January 13, 1987, Queenfish. After grouping segment widths and colors. 17 seconds, Bier, January 19, 1987, Queenfish. After using Convert.RealFromRope. 19 seconds, Bier, March 11, 1987, Queenfish. Cedar7.0. 15 seconds, March 13, 1988, Queenfish. Building TiogaButtons all at once. 3) Create Typescript. Get Halftones.gargoyle. Restore. Record the time it takes. 43 seconds. Bier, January 13, 1987, Queenfish. 35 seconds. Bier, January 13, 1987, Queenfish. After grouping segment widths and colors. 30 seconds. Bier, January 19, 1987, Queenfish. After using Convert.RealFromRope. 30 seconds. Bier, January 27, 1987, Queenfish. After adding CMY color info and making TRUE => T. 31 seconds. March 11, 1987, Bier, Queenfish. Cedar7.0. 26 seconds. November 2, 1989. Bier, (Queenfish has more memory) 12 seconds. April 18, 1990, Bier, Pippin. 12 seconds (first), bier, duet, May 26, 1992 16 seconds (second), bier, duet, May 26, 1992 10 seconds (third), bier, duet, May 26, 1992 4) Create Typescript. Get DenverBroncos.gargoyle. Restore. Record the time it takes. DenverBroncos contains lots of natural splines. 31 seconds. Bier, January 19, 1987, Queenfish 22 seconds. Bier, January 19, 1987, Queenfish. After seeing to it that open Natural splines compute their bounding box only once when they are created. 21 seconds. Bier, January 19, 1987, Queenfish. 22 seconds. Bier, January 27, 1987, Queenfish. 10 seconds. Bier, November 2, 1989, Queenfish. 5 seconds. Bier, April 18, 1990, Pippin 3 seconds, bier, duet, May 26, 1992. 4 seconds, bier, duet, May 26, 1992. 3 seconds, bier, duet, May 26, 1992. 5) (Obsolete. IP files missing.) Create Typescript. Get Montage.gargoyle. Restore. Record the time it takes. Montage contains lots of IP slices. 1:39. Bier, January 26, 1987, Queenfish. 1:25. Bier, January 27, 1987, Queenfish 83 seconds. Bier, January 28, 1987, Queenfish 27 seconds. Bier, January 28, 1987, Queenfish. After storing the IP master bounding boxes in the GG file. 6) Create Typescript. Get windowhacker.gargoyle. Restore. Record the time it takes. windowhacker is relatively small, testing for overhead that is always present. March 14, 1988, Bier, Queenfish 6-7 seconds. March 14, 1988, Bier, Queenfish. Building TiogaButtons all at once. 4-5 seconds. March 14, 1988, Bier, Queenfish. ReadOptions. starts: 1. total: 427. avg: 427. min: 427. max: 427, index: 1 Restore. starts: 1. total: 8755. avg: 8755. min: 8755. max: 8755, index: 1 March 14, 1988, Bier, Queenfish. Tuning ReadReal and ReadBlank a bit: ReadOptions. starts: 1. total: 420. avg: 420. min: 420. max: 420, index: 1 Restore. starts: 1. total: 8374. avg: 8374. min: 8374. max: 8374, index: 1 ReadOptions. starts: 1. total: 420. avg: 420. min: 420. max: 420, index: 1, Restore. starts: 1. total: 8450. avg: 8450. min: 8450. max: 8450, index: 1 April 18, 1990, Bier, Pippin ReadOptions. n: 1. total: 590. avg: 590. range: [590..590], worst: 1 Restore. n: 1. total: 5864. avg: 5864. range: [5864..5864], worst: 1 7) Getting text. Get /PCedar2.0/Forms/FirstPublicationRelease-1.gargoyle. Record the time it takes. March 17, 1992. Bier, duet, stale world, first load, font cache on Done in time (00:00:48) March 17, 1992. Bier, duet, stale world, second load, font cache on Done in time (00:00:06) March 17, 1992. Bier, duet, stale world, third load, font cache on Done in time (00:00:04) March 18, 1992, bier, duet, fresh world, first load, font cache OFF Done in time (00:01:10) March 18, 1992, bier, duet, fresh world, second load, font cache OFF Done in time (00:00:57) March 18, 1992, bier, duet, fresh world, third load, font cache OFF Done in time (00:00:52) March 18, 1992, bier, duet, fresh world, fourth load, font cache OFF Done in time (00:00:44) March 18, 1992, bier, duet, fresh world, fifth load, font cache OFF Done in time (00:00:51) March 18, 1992, bier, duet, fresh world, first load, font cache ON Done in time (00:00:07) March 18, 1992, bier, duet, fresh world, second load, font cache ON Done in time (00:00:05) March 18, 1992, bier, duet, fresh world, third load, font cache ON Done in time (00:00:05) March 18, 1992, bier, duet, freshish world, initial load, font cache ON Done in time (00:00:41) March 19, 1992, bier, duet, fresh world, initial load, lazy evaluation, unoptimized Done in time (00:00:33) March 19, 1992, bier, duet, fresh world, second load, lazy evaluation, unoptimized Done in time (00:00:07) May 26, 1992, bier, duet. initial load. 25 seconds. May 26, 1992, bier, duet. second load. 5 seconds. 8) Getting screen text. Get /CedarCommon2.0/FamousFiles/GargoyleControlPanel.gargoyle. Record the time it takes. March 17, 1992, bier, duet, stale world, first load, font cache on Done in time (00:00:12) March 17, 1992, bier, duet, stale world, second load, font cache on Done in time (00:00:08) March 17, 1992, bier, duet, stale world, third load, font cache on Done in time (00:00:07) March 19, 1992, bier, duet, fresh world, initial load, lazy evaluation, unoptimized Done in time (00:00:09) File Size 1) hackerhouse.gargoyle. Use ls to find out. HackerHouse.gargoyle!1 66614 29-Oct-86 21:39:40 PST hackerhouse.gargoyle!2 63990 13-Jan-87 23:12:48 PST After factoring out stroke widths and colors. HackerHouse.gargoyle!9 65826 26-Jan-87 19:39:14 PST After adding dashed strokes, changing TRUE to T, and encoding CMY vs black toner in all colors. hackerhouse.gargoyle!2 72805 14-May-87 12:04:36 PDT After outlines become slices, so Outline: is replaced by Slice (class: Outline). 8 characters => 22. An 11% increase in file size overall. HackerHouse.gargoyle!3 68815 14-May-87 13:00:34 PDT After making the slice headers shorter. The extra 3000 bytes over 26-Jan-87 is for the stroke end information on trajectories. HackerHouse.gargoyle!4 68636 14-May-87 13:27:38 PDT Getting rid of extra carriage returns. HackerHouse.gargoyle!5 75596 13-Mar-88 23:41:58 PST Outlines and Trajs are slices. Orientation. Named Colors. 2) Christmas86.gargoyle. Christmas86.gargoyle!1 44994 17-Dec-86 11:25:11 PST Christmas86.gargoyle!2 39598 13-Jan-87 23:15:50 PST 3) Halftones.gargoyle. Halftones.gargoyle!1 110282 07-Nov-86 15:16:59 PST Halftones.gargoyle!2 93547 13-Jan-87 23:28:11 PST, after grouping widths and colors. Halftones.gargoyle!3 91841 26-Jan-87 20:05:38 PST, after adding dashed strokes, changing TRUE to T, and encoding CMY vs black toner in all colors. Halftones.gargoyle!3 99107 02-Nov-89 15:03:32 PST t GGAlignImpl.RemoveMoving (2 refs) = 0, 46 (13.6%). Much of the StartAdd time is for drawing alignment lines. Ê7•NewlineDelimiter ™J˜J˜J˜0J˜.J˜IblockšÏb0˜0Jš&˜&Jš˜J˜š ˜ J˜J˜QJ˜'J˜'J˜.—J˜head2˜šœH˜HJš œ:˜FJšœ˜˜@JšœDœ˜M—˜NJšœ ˜ JšœDœ˜MJšœœ˜!—˜JšœDœ˜MJ˜s——šœ œ ˜šœB˜BJšœDœ˜M—šœJ˜JJšœ ˜ JšœDœ˜MJšœœ˜!—J˜—J˜—šœ]˜]Jš œ:˜FšœS˜SšœE˜EJšœCœ˜L—šœM˜MJšœ ˜ JšœGœ˜PJšœœ˜!—J˜—J˜——˜ ˜1˜!Jšœ3œ ˜[Jšœ2œ˜XJšœ2œ ˜Z—˜1Jšœ3œ ˜[Jšœ2œ ˜Y—˜XJšœœœ˜F—˜gJšœ$œ˜RJšœ%œ˜S———˜J˜šœ7˜7šœœ˜+Jšœ%œ6˜b—šœ'˜'Jšœ%œ6˜b—šœ˜Jšœ$œ)˜SJšœ$œ4˜^Jšœ#œ;˜d—˜HJšœ)œ˜DJšœ&œ˜@—˜FJšœ(œ˜MJšœ&œ˜K—˜EJšœ(œ ˜NJšœ&œ ˜L—˜ Jšœ)œ œ ˜PJšœ&œ œ ˜LJ˜]—šœU˜UJšœ)œ œ ˜Q—˜]Jšœ)œ ˜PJšœ)œ ˜P—˜NJšœ)œ˜O—˜]Jšœ(œ˜M—˜"Jšœ.œ ˜PJšœ.œ˜N—˜&Jšœ-œ˜A—˜%Jšœ-œ˜AJšœ-œ˜A—˜%Jšœ(œ˜EJšœ(œ˜D—˜KJšœ(œ˜FJšœ(œ˜F—J˜—šœ6˜6šœ˜Jšœ&œ,˜Z—šœ'˜'Jšœ&œ,˜Z—šœ˜Jšœ%œ*˜VJšœ%œ3˜_Jšœ$œ=˜h—šœ?˜?Jšœ*œ*˜[Jšœ*œ3˜dJšœ)œ˜F—˜@Jšœ)œ ˜PJšœ'œ ˜N—šœœ'˜UJšœH˜HJšœ)œ!˜QJšœ'œ!˜O—˜*J˜HJšœ)œ!˜QJšœ'œ!˜O—˜Jšœ)œ!˜QJšœ'œ!˜O—˜²Jšœ)œ ˜PJšœ'œ!˜O—šœe˜eJšœ)œ/˜_—˜nJšœ)œ"˜RJšœ)œ!˜Q—˜DJšœ)œ!˜QJšœ œœ œ ˜P—˜`Jšœ)œ!˜Q—˜"Jšœ.œ˜OJšœ.œ˜O—˜RJšœ.œ ˜PJšœ.œ!˜Q—˜Jšœ)œ˜G—˜Jšœ)œ˜F—˜Jšœ)œ˜G—˜Jšœ(œ˜F—J˜—šœC˜C˜kJšœ)œ!˜QJšœ'œ!˜OJšœ)œ!˜QJšœ'œ!˜O—˜WJšœ)œ ˜PJšœ'œ ˜N—šœi˜iJšœ)œ ˜PJšœ&œ ˜L—šœ°˜°Jšœ)œ ˜PJšœ&œ˜J—šœ0˜0Jšœ)œ ˜PJšœ&œ!˜MJšœ)œ!˜QJšœ&œ˜L—˜Jšœd˜d—Jšœ#œ%˜P—˜AJšœ$œ ˜LJšœ œ+˜TJšœ.œ˜SJšœ"œ˜9—˜)Jšœ$œ!˜MJšœ,œ ˜TJšœ.œ˜SJšœ# œ"˜N˜J˜ —Jšœ$œ.˜ZJšœ,œ ˜TJšœ.œ˜SJšœ"œ.˜X—J˜—šœ œ˜šœ˜Jšœ'œ˜FJšœ œœ˜@—šœQ˜YJšœ&œœ ˜OJšœ œœ˜@—šœL˜TJšœ&œœ ˜NJšœ"œ ˜J—š œ ˜0Jšœ&œ!˜OJšœ"œ ˜J—š œ œ˜2Jšœ&œ œ ˜PJšœ"œ ˜J—š œ œ˜/Jšœ'œ"˜QJšœ"œ ˜J—šœ˜ Jšœ&œ!˜Ošœ"œ ˜JJ˜B——šœ˜!Jšœ&œ"˜Pšœ"œ ˜JJ˜@——šœ˜!Jšœ&œ ˜NJšœ"œS˜}—šœ^˜wJšœ&œ"˜PJšœ"œ ˜J—šœ<˜JJšœ&œ"˜PJšœ&œ ˜N—šœ˜ Jšœ'œ"˜QJšœ&œ ˜N—šœ}˜‹Jšœ&œ"˜PJšœ&œ ˜NJšœ&œ!˜OJšœ&œ ˜NJ˜—šœE˜UJšœ&œ!˜OJšœ&œ"˜P—šœC˜QJšœ&œ/˜]Jšœ&œ!˜OJšœ&œ/˜]Jšœ&œ.˜\—šœ!˜!Jšœ+œ/˜]Jšœ+œ.˜\Jšœ+œ/˜]Jšœ+œ/˜]—˜Jšœ&œ˜HJšœ&œ˜G—˜Jšœ&œEœ˜J˜—J˜—šœœ˜šœ˜Jšœ%œ ˜MJšœ#œ ˜K—š œ˜#Jšœ%œ!˜NJšœ#œ ˜K—š œ˜%Jšœ%œ ˜MJšœ#œ ˜K—šœ˜ Jšœ%œ ˜MJšœ#œ ˜K—šœ˜-Jšœ%œ ˜MJšœ#œ!˜L—šœ ˜.Jšœ% œ"˜PJšœ& œ"˜QJšœ% œ"˜PJšœ& œ"˜Q—šœg˜uJšœ% œ!˜OJšœ& œ"˜Q—šœ`˜nJšœ%œ ˜MJšœ& œ"˜Q—šœx˜†Jšœ%œ!˜NJšœ%œ ˜M—šœE˜SJšœ%œ!˜NJšœ%œ ˜MJšœ%œ!˜NJšœ%œ ˜M—šœ˜ Jšœ%œ ˜MJšœ%œ ˜M—šœE˜UJšœ%œ!˜NJšœ%œ ˜M—šœ@˜NJšœ*œ.˜[Jšœ+œ0˜_—šœ1˜1Jšœ*œ.˜[Jšœ+œ.˜\Jšœ*œ.˜[Jšœ*œ.˜[—˜6Jšœ%œ˜FJšœ&œ˜G—˜7Jšœ%œDœ˜—J˜—šœœ œ˜+šœ#˜#Jšœ9™9Jšœ'œ"˜QJšœ#œ ˜K—šœ%˜%Jšœ'œ"˜QJšœ#œ ˜K—˜ Jšœ'œ"˜QJšœ#œ ˜K—˜Jšœ'œ"˜QJšœ'œ ˜O—šœU˜UJšœ&œ!˜OJšœ'œ!˜P—šœ9˜9Jšœ&œ/˜]Jšœ'œ/˜^—˜!Jšœ+œ/˜]Jšœ,œ/˜^Jšœ+œ/˜]Jšœ,œ/˜^—˜Jšœ'œ˜HJšœ'œ˜H—˜'Jšœ%œDœ˜J˜——šœ€˜€Jšœ& œ"˜Qšœ# œ˜-J˜ —Jšœ%œ ˜Mšœ# œ˜-J˜_—J˜——˜˜mš œ˜J˜-Jšœ# ˜-Jšœ,˜,—š œî˜úJ˜-Jšœ# œ˜-—šœË˜ÝJ˜-Jšœ# œ˜-—šœ]˜oJšœ# œ˜-Jšœ# œ˜-—šœÖ˜èJšœ# œ˜-Jšœ# œ˜-—šœ‹˜¨Jšœ# œ˜-Jšœ# œ˜-—š$œ1˜UJšœ# œ˜-Jšœ(œ˜-—š$œ9˜]Jšœ(œ˜-Jšœ(˜,—š$œ/˜SJšœ(œ˜-Jšœ(˜,—š"œ5˜WJšœ(œ˜-Jšœ(˜,—˜!Jšœ(œ˜-Jšœ(˜-—˜Jšœ#œ ˜G—˜Jšœ#œ ˜G—˜'Jšœ"œ˜CJšœ"œ˜C—˜1Jšœ"œn˜“Jšœ"œn˜“———˜Jšœ.˜.J˜šœF˜Fšœ˜!Jšœ+œ˜J—šœ“˜£Jšœ+œ˜K—šœ-˜>Jšœ+œ"˜U—šœ6˜GJšœ+œ!˜T—šœ˜!Jšœ+œ˜R—š*˜*Jšœ+œ˜R—š$œ1˜UJšœ+œ ˜S—šœ"˜"Jšœ0œ ˜SJšœ0œ ˜S—˜Jšœ+œ˜M—˜Jšœ+œ˜M—˜'Jšœ+œ˜LJšœ+œ˜L—˜MJ˜JJšœ‹œ¦œî˜¥Jšœ+œ˜MJšœ)œ˜JJ˜—J˜—šœX˜Xš ˜ Jšœ,œ˜SJšœ(œ!˜Q—š*˜*Jšœ,œ˜SJšœ)œ ˜Q—š$œ1˜UJšœ,œ˜SJšœ)œ!˜R—šœ˜!Jšœ1œ/˜cJšœ.œ/˜`Jšœ1œ/˜cJšœ.œ/˜`—˜Jšœ-œ˜OJšœ)œ˜K—˜Jšœ,œIœ˜š—˜'Jšœ+œHœ˜——J˜—šœ œt˜ƒJšœ*Ðbv œ˜KJšœ+  œ"˜VJšœ)œ˜Gšœ*œ˜HJ˜¸—Jšœ)œ˜2Jšœ*œB˜tJšœ)˜1Jšœ*œB˜tJšœ)˜1šœ*œB˜tJ˜£———˜˜ˆšœ"˜"Jšœ& œ˜2—šœ"˜"Jšœ& œ˜2—šœq˜qJšœ& œ˜2—šœ!˜!Jšœ& œ&˜U—šœ*˜*Jšœ& œ2˜a—šœ"˜"Jšœ+œ"˜QJšœ+œ#˜R—˜Jšœ&œ ˜J—˜Jšœ&œ ˜JJšœ&œ ˜JJ˜J˜——šœž˜ž˜Jšœ.œ ˜VJšœ. œ œ˜Y—šœZ˜ZJ˜VJšœ0œœ˜VJ˜VJšœ-œœ˜U—šœA˜AJšœV˜VJšœ-œ˜UJ˜———˜˜½šœ"˜"Jšœ1œ˜—šœk˜kJšœ1œ˜:Jšœ2œ˜:Jšœ1œ˜:Jšœ2œ˜:—šœ+˜+Jšœ!œ˜*Jšœ#œ˜,Jšœ!˜)Jšœ#œ ˜8—šœU˜UJšœ2œ ˜ZJšœ3œ˜X—šœr˜rJšœ8œ˜X—˜J˜JJšœ2œ˜PJ˜——Jšœƒ˜ƒšœ˜šœ œ˜*Jšœ œ˜*J˜—šœ!#œ˜EJšœœ˜'J˜——˜ÒJ˜J˜—˜U˜Jšœ œ ˜1Jšœ œ ˜0Jšœ œ ˜/Jšœ œ ˜2Jšœ œ ˜2Jšœ& œ"˜QJšœ) œ"˜TJšœ& œ˜0Jšœ& œ˜0Jšœ' œ˜1Jšœ& œ˜0Jšœ& œ˜0Jšœ'œ!˜PJšœ& œ˜0Jšœ%œ ˜MJšœ'œ˜LJšœ%œ˜.Jšœ$œ˜,Jšœ&œ˜/Jšœ%œ˜.Jšœ$œ˜,Jšœ&œ ˜NJšœ%œ˜.Jšœ% œ˜/Jšœ$ œ˜.—˜[Jšœ' œ˜1Jšœ'œ˜0Jšœ&œ˜/Jšœ( œ˜2Jšœ( œ˜2Jšœ% œ!˜OJšœ(œ ˜PJšœ& œ˜0Jšœ%œ˜.Jšœ' œ˜1Jšœ& œ˜0Jšœ%œ˜.Jšœ'œ!˜PJšœ& œ˜0Jšœ%œ ˜MJšœ'œ˜LJšœ%œ˜.Jšœ$œ˜,Jšœ&œ ˜NJšœ%œ˜.Jšœ$œ˜,Jšœ&œ ˜NJšœ%œ˜.Jšœ% œ˜/Jšœ#œ˜,—˜ïJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ( ˜2Jšœ( ˜2Jšœ% œ ˜OJšŸ œœ˜LJšœ& ˜0Jšœ% ˜.Jšœ' ˜1JšŸ œ ˜0JšÏz œ˜,Jšœ' œ ˜PJš¡ œ ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,—˜fJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ( ˜2Jšœ( ˜2Jšœ% œ ˜OJšœ( œ˜PJšœ& ˜0Jšœ% ˜.Jšœ' ˜1Jšœ& ˜0Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,—˜`Jšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ( ˜2Jšœ% œ˜MJšœ'œ˜LJšœ& ˜0Jšœ% ˜.Jšœ& ˜/Jšœ& ˜0Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,—˜HJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ( ˜2Jš¡%Ðbz ¡˜MJšœ'œ˜LJšœ& ˜0Jš¡%¢˜.Jš œ ˜/Jšœ& ˜0Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,Jšœ( ˜2Jšœ' ˜0—˜Jšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ( ˜2JšŸœ œ˜MJšœ'œ˜LJšœ& ˜0Jšœ% ˜.JšŸ œ ˜/Jšœ& ˜0Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,Jšœ( ˜2Jšœ' ˜0—˜LJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ( ˜2Jšœ œ ˜NJšœ'œ˜LJšœ& ˜0Jšœ% ˜.Jš œ ˜/Jšœ& ˜0Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,Jšœ( ˜2Jšœ' ˜0—˜jJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ( ˜2Jšœ œ˜MJšœ'œ˜LJšœ% ˜.Jšœ% ˜.Jšœ& ˜/Jšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,Jšœ' ˜0Jšœ' ˜0—˜¹Jšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ' ˜0Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ% ˜.Jšœ& ˜/Jšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ% ˜/Jšœ# ˜,Jšœ' ˜0Jšœ' ˜0—šœe˜eJšœ' ˜1Jšœ' ˜0Jšœ& ˜/Jšœ' ˜0Jšœ' ˜0JšŸœ œ˜MJšœ'œ˜LJšœ% ˜.Jšœ% ˜.Jšœ& ˜/Jšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.J˜Jšœ% œ˜MJšœ'œ˜LJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.JšŸœ ˜/Jšœ# ˜,Jšœ' ˜0Jšœ' ˜0—šœY˜YJšŸ œ ˜1JšŸ œ ˜0Jšœ& ˜/Jšœ' ˜0Jšœ' ˜0Jšœ% œ˜MJšœ'œ˜LJšŸ œ ˜.Jšœ% ˜.Jšœ& ˜/Jšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.J˜Jšœ% œ˜MJšœ'œ˜LJšŸ œ ˜.Jšœ$˜,Jšœ& œ˜NJšœ% ˜.Jšœ$˜,Jšœ& œ˜NJšŸ œ ˜.Jšœ% ˜/Jšœ# ˜,Jšœ' ˜0Jšœ' ˜0J˜—šœ"˜"Jš7œ,œ.œ-œ.œ.œ,œMœIœ,œ-œ,œ+œ-œKœ,œ[œWœ+œ-œKœ+œJœKœ,œ*œ.œ.œ˜ —˜Jš7œ'¢œHœEœFœFœD¢œGœCœDœEœDœCœDœDœDœGœBœDœFœDœDœFœDœDœDœFœFœr˜åJ˜——˜e˜#Jšœ' ˜1Jšœ( ˜2Jšœ& ˜/Jšœ( ˜2Jšœ( ˜2Jšœ& œ!˜QJšœ' œ˜NJšœ& ˜0Jšœ% ˜.Jšœ& ˜/Jšœ& ˜0Jšœ% ˜.Jšœ' œ˜OJšœ& ˜0Jšœ% œ ˜OJšœ' œ˜NJšœ& ˜0Jšœ% ˜.Jšœ' œ˜OJšœ& ˜0Jšœ% ˜.Jšœ' œ˜OJšœ% ˜.Jšœ% ˜/Jšœ$ ˜.Jšœ( ˜2Jšœ' ˜0——J˜—˜ šœ&œ˜=Jšœ@ ˜IJšœ. ˜7JšœA ˜JJšœ. œ˜VJšœ˜Jšœ; ˜DJšœ. ˜9Jšœ œ%˜Ašœ+˜+Jšœ- œ˜7—˜=Jšœ%œ˜*Jšœ&œ˜+Jšœ&œ˜+Jšœ&œ˜+—˜(Jšœ&œ˜+—˜JJšœ&œ˜+Jšœ&œ˜+—˜uJšœ&œ˜+Jšœ&œ˜+—˜EJšœ&œ˜+—˜WJšœ&œ˜+—˜UJšœ&œ˜+Jšœ&œ˜+—˜"Jšœ&œ.˜XJšœ&œ.˜X—˜Jšœ!œ,˜Q—˜QJšœ!œ,˜QJšœ!œ,˜Q—˜eJšœ!œ,˜QJšœ!œ,˜Q—J˜—šœ>˜>šœ. œ˜9J˜ —šœ- ˜7Jšœlœ˜Œ—˜LJšœ- œ"˜X—šœ-œy˜­Jšœ&œ˜+Jšœ&œ˜+—˜OJšœ&œ˜+—˜>Jšœ&œ˜+—˜"Jšœ2œ˜7Jšœ2œ˜7—˜Jšœ-˜1J˜——šœr˜r˜5Jšœ&œ˜+Jšœ&œ˜+—˜1Jšœ&œ˜+Jšœ&˜+—˜XJšœ&œ˜+Jšœ&˜+—˜!Jšœ&œ ˜7Jšœ&œ ˜7J˜——˜3˜Jšœ/œ¤œœ˜œ¥œœMœœRœœœ¼˜þ —˜‚JšœFœ½œ¸œÈœ½œ¹œ©œ^œºœ×˜¬—˜;JšœFœ½œœ«œœÂœ½œœ­œœ¥œ^œ¹œ×˜°—˜?JšœFœ¼œœ®œœÉœÄœÚ˜·—˜