Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Obtimizing - making a script fast - stopwatch

    Scheduled Pinned Locked Moved PYTHON Development
    4 Posts 0 Posters 321 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 22/11/2012 at 23:49, xxxxxxxx wrote:

      Hi everyone,

      I have a working script deleting a lot off tags of several mio (yes your read right Millions) objects, but need to optimize the coding.

      I want to code a stopwatch at start and end of the code so i can measure my improvements in code - how do i do that?

      Also what can I do to make my script faster (stripping all undo code?)

      kind regards
      mogh

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 23/11/2012 at 00:07, xxxxxxxx wrote:

        Hi mogh,

        Originally posted by xxxxxxxx

        I have a working script deleting a lot off tags of several mio (yes your read right Millions) objects, but need to optimize the coding.
        I want to code a stopwatch at start and end of the code so i can measure my improvements in code - how do i do that?

        You can call GeGetTimer() to measure the execution time of your code. See the code in this post.

        Originally posted by xxxxxxxx

        Also what can I do to make my script faster (stripping all undo code?)

        Yes, you could try removing your undo code.

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 23/11/2012 at 06:17, xxxxxxxx wrote:

          Just had this idea, but it comes with a little more code than I had expected. However, maybe you can find use for it. 

          # Copyright (C) 2012, Niklas Rosenstein  
          # Licensed under the GNU General Public License
          import time
          class Measure(object) :  
            """ This class implements measuring the time of code execution. It  
                also comes with an implementation of the `with` interface.
                  >>> width Measure() as t:  
                ...     time_heavy_stuff()  
                ...  
                >>> print t.delta()  
                """
              def __init__(self) :  
                super(Measure, self).__init__()  
                self._start = -1  
                self._delta = -1
              def __enter__(self) :  
                self.start()  
                return self
              def __exit__(self, exc_type, exc_value, exc_tb) :  
                self.stop()
              def start(self) :  
                self._delta = -1  
                self._start = time.time()
              def stop(self) :  
                if self._start < 0:  
                    raise RuntimeError('measuring must have been started before.')  
                self._delta = time.time() - self._start  
                self._start = -1  
                return self._delta
              def current(self) :  
                if self._start < 0:  
                    raise RuntimeError('measuring must have been started before.')  
                return time.time() - self._start
              def delta(self) :  
                if self._delta < 0:  
                    raise RuntimeError('measurement has not been stopped since the '  
                                       'last start.')  
                return self._delta
              def reset(self) :  
                self._start = -1  
                self._delta = -1
          def main() :  
            with Measure() as t:  
                time.sleep(0.5)  
            print t.delta()
          main()
          
          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 24/11/2012 at 16:45, xxxxxxxx wrote:

            There are a few good tips at the French forum here:

            http://frenchcinema4d.fr/showthread.php?75224-Optimisation-en-Python

            And yes, for very large set ups, skipping the Undo totally can help - a lot-
            for speed in that your ram isn't filled with undos.

            For some of my PLA scripts/plugins calculating 10s of thausands points per frame
            I simply set the main undo to minimum (1) while they are running, resettings
            the main undo after they're done.

            Cheers
            Lennart

            1 Reply Last reply Reply Quote 0
            • First post
              Last post