• Performance Analysis:
    • If you expand one of the threads used by a NeXtMidas (Java) primitive you will notice that it starts out with:
      <COMMAND>
        +-- MidasThread.run()
              +-- Command.run()
                    +-- Command.runSingle()
                          +-- <command>.open()
                          +-- <command>.process()
                          +-- <command>.close()
                          +-- Command.processMessages(int)
      
    • This is where the open(), process(), and close() methods are called for your primitive.
    • The Command.processMessages(int) (shown here) will call your processMessage() method if any messages are received.
    • You will note that to the right of each entry are some important statistics.
      • The most important one is the little red bar graph indicating what percentage of the time was used up by that method (plus the methods it calls).
        • The smaller the bar, the less benefit there is to improving performance of that method.
        • When you look at that bar, a light bulb should illuminate over your head saying "Remember Amdahl's Law!"
      • The next statistic is the total "Time" spent in that method. Be careful to note that this is a cumulative statistic.
      • The second most important statistic is the third column, "Invocations". This is the number of times that method was called.
        • Many times the number of invocations explains why the total time is so high for some methods.
        • Even trivial methods can take an appreciable amount of time when they are called tens of millions of times.