dhermes / bezier

Helper for Bézier Curves, Triangles, and Higher Order Objects
Apache License 2.0
255 stars 35 forks source link

Consider caching Curve hodograph() and concavity() #87

Open dhermes opened 6 years ago

dhermes commented 6 years ago

This way we can avoid re-computing the first and second node differences if they will be used many times.

(I am leaning heavily on not doing this.)

Places that could benefit:

dhermes commented 6 years ago

To evaluate usage we can add non-caching private Curve._hodograph/_concavity as in the code removed in 1f3ec1a724306610b3fba918406aab086db63ad8:

commit 1f3ec1a724306610b3fba918406aab086db63ad8
Author: Danny Hermes <daniel.j.hermes@gmail.com>
Date:   Fri Jan 13 00:57:32 2017 -0800

    Removing accidentally added code from last commit.

diff --git a/src/bezier/curve.py b/src/bezier/curve.py
index e9334df..94e8c7f 100644
--- a/src/bezier/curve.py
+++ b/src/bezier/curve.py
@@ -114,7 +114,6 @@ class Curve(_base.Base):
         '_degree', '_start', '_end', '_root',  # From constructor
         '_length', '_edge_index', '_next_edge',  # Empty defaults
         '_previous_edge',  # Empty defaults
-        '_calls',  # TEMP
     )

     def __init__(self, nodes, degree, start=0.0, end=1.0,
@@ -130,7 +129,6 @@ class Curve(_base.Base):
         self._edge_index = None
         self._next_edge = None
         self._previous_edge = None
-        self._calls = 0  # TEMP

     @classmethod
     def from_nodes(cls, nodes, start=0.0, end=1.0, root=None, _copy=True):
@@ -772,9 +770,3 @@ class Curve(_base.Base):
                              point, 'Shape expected:', (1, self._dimension))

         return _curve_helpers.locate_point(self, point)
-
-    def _hodograph(self, s):
-        self._calls += 1
-        print('::: Calls - {} :::'.format(self._calls))
-        return _curve_helpers.evaluate_hodograph(
-            self._nodes, self._degree, s)