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. Gravity Performance 1) Load arcbench.gargoyle. Run Gravity Test in the Debug Menu 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 2) Load windowhacker.gargoyle. Run Gravity Test in the Debug Menu. 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 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 3) Load TrajAlignTest.gargoyle. Make all hot. Turn on 0 and 30 degree slope lines. Turn on 1 inch circles. Run Gravity Test in the Debug Menu. 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 Bier, January 5, 1987. Queenfish. With precomputed alignment intersections, on-the-fly traj intersections. 4) Load windowhacker.gargoyle. Run Gravity Test in the Debug Menu. Multi Gravity (with n = 5): 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, October 1, 1986, Bier, Independence 5) Load hacker.gargoyle. Run Gravity Test in the Debug Menu. Base Case: Map. started: 1001. total: 207209. avg: 207. min: 152. max: 937, index: 1001 Caching BoundBoxes: Map. started: 1001. total: 42646. avg: 42. min: 10. max: 277, June 20, 1986, Bier Map. started: 1001. total: 52855. avg: 52. min: 36. max: 231, June 30, 1986, Bier, Langley 6) Playback BezierHitTest.script. Record the CurveClosestPoint line in the Typescript. CurveClosestPoint. starts: 46. total: 25588. avg: 556. min: 242. max: 950, index: 20, Bier, December 2, 1986 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. Bier, December 2, 1986 CurveClosestPoint. starts: 41. total: 1671. avg: 40. min: 6. max: 151, index: 1. -- finding only the roots in [0..1], Bier, December 2, 1986 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. Bier, December 29, 1986 CurveClosestPoint. starts: 41. total: 899. avg: 21. min: 2. max: 67, index: 17, Bier, January 19, 1987, Queenfish 7) 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. 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 2, 1986? CurveClosestPoint. starts: 28. total: 2545. avg: 90. min: 18. max: 231, index: 18 -- using subdivision with tolerance = 1 pixel. Bier, December 29, 1986. 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, Bier, January 19, 1987, Queenfish 8) Caret speed for these bags. Use KnotchedGrid.script. Record both MultiMap times. 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 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 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: 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 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: 1093. avg: 182. min: 86. max: 235, index: 3 Circles. MultiMap. starts: 6. total: 1018. avg: 169. min: 30. max: 625, index: 2 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: 427. avg: 71. min: 28. max: 198, index: 2 Circles. MultiMap. starts: 6. total: 882. avg: 147. min: 19. max: 587, index: 3 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: 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 These times are not very repeatable. All of the above 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: 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 Using a more careful test for line parallelism. No noticeable change. January 5, 1987, Bier, Queenfish. Text Performance June 20, 1986 5:08:11 pm PDT 1) Load teddy.gargoyle. Type the words "Now is the time for all" in the middle of the bear. 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 2) 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 Adding Performance 1) 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) 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. 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 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 5) 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. Caret Positioning Performance June 24, 1986 4:20:57 pm PDT, Bier, BunkerHill 1) Playback IntersectionTest1.script. Record the StartCaretPos line. StartCaretPos. starts: 16. total: 2845. avg: 177. min: 162. max: 207, November 6, 1986, Bier, QueenFish StartCaretPos. starts: 16. total: 2730. avg: 170. min: 140. max: 302, 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: 3040. avg: 190. min: 154. max: 242, index: 7, November 26, 1986, Bier, QueenFish (Object-oriented outlines). StartCaretPos. starts: 16. total: 1797. avg: 112. min: 95. max: 206, index: 7, December 29, 1986, Bier, QueenFish. Less feedback during caret motion. StartCaretPos. starts: 16. total: 1975. avg: 123. min: 86. max: 223, index: 7, January 5, 1987, Bier, QueenFish 2) Playback IntersectionTest2.script. Record the DuringCaretPos and EndCaretPos times. 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 January 7, 1987, Bier, Queenfish 3) 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. Record the SelectAll line from (Debug, Performance). SelectAll. starts: 1. total: 9144. avg: 9144. Bier, November 11, 1986, QueenFish SelectAll. starts: 1. total: 8961. avg: 8961. Bier, December 17, 1986, QueenFish SelectAll. starts: 1. total: 7805. avg: 7805. Bier, December 29, 1986, QueenFish. After simplifying the Selection feedback so it doesn't paint anything twice. SelectAll. starts: 1. total: 5454. avg: 5454. Bier, January 7, 1987, QueenFish. After speeding up joint generators. 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. Lines, BuiltInFilters. starts: 1. total: 458. avg: 458. Bier, December 29, 1986, QueenFish Circles, BuiltInFilters. starts: 1. total: 361. avg: 361. Bier, December 29, 1986, QueenFish Lines, BuiltInFilters. starts: 1. total: 1240. avg: 1240 Circles, BuiltInFilters. starts: 1. total: 403. avg: 403 These times seem to be very sensitive to garbage collection. Bier, December 29, 1986, Queenfish. Lines, BuiltInFilters. starts: 1. total: 1363. avg: 1363 Circles, BuiltInFilters. starts: 1. total: 388. avg: 388. Lines, BuiltInFilters. starts: 1. total: 923. avg: 923. Circles, BuiltInFilters. starts: 1. total: 979. avg: 979. Bier, January 5, 1987, Queenfish 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. January 5, 1987, Bier, Queenfish This suggests that garbage collection makes about a 500 msec difference. Refresh Time 1) Refresh! (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 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. Refresh of Alignment Lines 1) 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 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 Loading .gargoyle Files 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. 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. 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. 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. 5) 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. 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. 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. @Much of the StartAdd time is for drawing alignment lines. Ê Â˜J˜tJ˜IblockšÏb0˜0Jš&˜&Jš˜J˜head2˜J˜šœ>˜>šœœ˜+Jšœ%œ6˜b—šœ'˜'Jšœ%œ6˜b—šœ˜Jšœ$œ)˜SJšœ$œ4˜^Jšœ#œ;˜d—˜HJšœ)œ˜DJšœ&œ˜@—˜FJšœ(œ˜MJšœ&œ˜K—˜EJšœ(œGœ ˜›—J˜—šœD˜Dšœ˜Jšœ&œ,˜Z—šœ'˜'Jšœ&œ,˜Z—šœ˜Jšœ%œ*˜VJšœ%œ3˜_Jšœ$œ=˜h—˜@Jšœ)œ ˜PJšœ'œ ˜N—šœœ'˜UJšœrœIœ!˜êJ˜——šœ’˜’Jšœ)œ!˜QJšœ'œ!˜OJšœ)œ!˜Qšœ'œ!˜OJ˜l—J˜—šœC˜Cšœ˜Jšœ*œ*˜[Jšœ*œ3˜dJšœ)œ:˜j—J˜—šœ=˜=šœ ˜ Jšœ&œ#˜Q—šœ˜Jšœ%œ*˜VJšœ%œ3˜_J˜——šœW˜Wšœ œœ"˜ZJ˜—Jšœ œœe˜Jšœ/œf˜œJšœ/œ[˜‘Jšœ.œ«˜àJšœ.œA˜vJ˜—šœX˜XJšœ0œ"˜ZJšœ/œP˜†Jšœ/œy˜¯Jšœ/œu˜«Jšœ.œf˜›Jšœ.œB˜wJ˜—˜VJšœ-œ ˜UJšœ.œ˜UJšœ-œ ˜Ušœ.œ˜TJ˜Œ—Jšœ-œ ˜UJšœ.œA˜vJšœ¯˜¯Jšœ-œ˜Tšœ/œ˜VJšœ¦˜¦—Jšœ,œ˜Ršœ.œ˜UJšœ…˜…—Jšœ,œ˜RJšœ.œ˜TJšœ,œ˜RJšœ.œ˜TJšœ,œ˜Ršœ.œ˜SJšœœ8˜¼—Jšœ,œ˜RJšœ.œ˜TJšœ,œ ˜SJšœ.œ˜SJ˜i—J˜—˜J˜J˜šœ]˜]Jšœ' œ œ˜RJšœ'œ6˜rJšœ&œ?˜mJšœ%œD˜pJ˜—šœ6˜6Jšœ&œ=˜jJšœ&œ<˜iJšœ%œD˜p——˜šœo˜ošœ˜Jšœ) œ"˜TJšœU˜UJšœN˜NJšœK˜K—šœF˜FJšœ)œ ˜QJšœO˜OJšœ&œ ˜NJšœK˜K—šœ˜Jšœ)œ ˜QJšœ(œ ˜PJšœM˜MJšœ$ œ˜.—˜@Jšœ$œ˜-Jšœ,œ˜5Jšœ" œ ˜8Jšœ"œ˜8J˜šœ% œ˜>Jšœd˜d—Jšœ#œ%˜P—˜AJšœ$œ ˜LJšœ œ+˜TJšœ.œ˜SJšœ"œ˜9—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˜}—J˜—šœœ˜šœ˜Jšœ%œ ˜MJšœ#œ ˜K—š œ˜#Jšœ%œ!˜NJšœ#œ ˜K—š œ˜%Jšœ%œ ˜MJšœ#œ ˜K—šœ˜ Jšœ%œ ˜MJšœ#œ ˜KJ˜——šœœ œ˜+šœ#˜#Jšœ9™9Jšœ'œ"˜QJšœ#œ ˜K—šœ%˜%Jšœ'œ"˜QJšœ#œ ˜K—˜ Jšœ'œ"˜QJšœ#œ ˜KJ˜——šœn˜nJšœ& œ"˜Qšœ# œ˜-J˜ —Jšœ%œ ˜Mšœ# œ˜-J˜_—J˜——˜Jšœ.˜.J˜šœF˜FJšœ+œ9˜lJšœ+œ»˜îJšœ+œ`˜“Jšœ+œh˜›Jšœ+œA˜tJ˜—šœX˜XJšœ,œ˜Sšœ(œ!˜QJ˜ —J˜—šœu˜uJšœ*Ðbv œ˜KJšœ+ž œ"˜VJšœ)œ˜Gšœ*œ˜HJ˜¸—Jšœ)œ˜2Jšœ*œB˜tJšœ)˜1Jšœ*œB˜tJšœ)˜1šœ*œB˜tJ˜£———˜J˜^Jšœ& œ%˜TJšœ& œ%˜TJšœ& œt˜£Jšœ& œI˜x—˜J˜ûJšœ1œ%˜^Jšœ3œ%˜`Jšœ2 ˜;Jšœ3œc˜žJšœ2 ˜;Jšœ3œ˜