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.
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.