Statistics
The IVM collects various statistics during execution. The Vine and Ivy CLIs display these statistics after running a program.
Let’s take a look at a sample stat block, section by section.
Interactions
Interactions Total 11_106_946 Annihilate 4_319_083 Commute 33_750 Copy 2_378_685 Erase 315_132 Expand 556_910 Call 3_227_767 Branch 275_619
Total shows the total number of interactions performed in the execution of the program. This measures how much “work” was done, in a deterministic and universal way; the same program will always have the exact same interaction count, no matter what machine it is run on.
The other numbers break down the various types of interactions.
Memory
Memory Heap 784 B Allocated 242_850_688 B Freed 242_850_688 B
Heap shows the greatest size of the runtime’s heap over the course of the program, measured in bytes. In this case, it never needed to use more than a kilobyte of heap space throughout the entire program.
Allocated shows the total number of bytes allocated through the program, and Freed shows the total number of bytes freed. These numbers should always match; if they differ, that indicates that there was a vicious circle in the interaction net.
In this case, Allocated and Freed are much greater than Heap; this shows that the evaluator was reusing its memory buffer very effectively. (This is very common for the IVM.)
These numbers are deterministic when the program is executed sequentially, but can vary when executed in parallel (since the OS’s thread scheduling is non-deterministic).
Performance
Performance Time 175 ms Speed 63_375_794 IPS
Time is the amount of time elapsed over the execution of the program.
Speed is the speed of the execution, measured in IPS (interactions per second), and equal to Interactions / Time.
Parallel Statistics
Some statistics only apply to parallel execution.
Workload
Workload Workers 16 Active 16 Minimum 312_096 Average 694_184 Maximum 855_071 Moved 111
Workers is the number of worker threads available to the IVM.
Active is the number of worker threads that were used.
Minimum, Average, and Maximum describe the statistics of the number of interactions performed by each active worker.
Moved is the number of active pairs that were moved between workers.
Performance
Performance Time 19 ms Speed 569_167_395 IPS Working 230 ms Rate 48_201_985 IPS
Time and Speed are the same as in sequential execution.
Working is the total of the amounts of time each worker was active.
Rate is the average speed of an individual worker, and equal to Interactions / Working.