1. A method of executing a program on a multiprocessor computer with shared memory, the program comprised at least in part of computational operations of program instructions wherein data accessed by at least one computational operation affects data written by at least one other computational operation, the method comprising steps of: (a) measuring a parallel execution of at least a portion of the program with different number of processors executing the program in parallel to provide at least one value related to a speed of execution of the program on a computer; (b) adjusting the number of processors executing the program in parallel according to the at least one value; and wherein the method includes a step of allocating computational operations of the program to different processors during the parallel execution of the program according to rules preventing conflicts caused by data accesses among the computational operations caused by their parallel execution and wherein step (b) operates during the parallel execution to adjust the number of processors to which the computational operations may be allocated; wherein the program includes at least one computational operation that may be executed in parallel on the number of processors and a step of measuring execution of the program measures an execution of at least a portion of the computational operations on at least one processor; wherein the measuring of the parallel execution of the at least a portion of the program monitors a counter near a start and completion of the at least a portion of the program; wherein the adjusting compares the at least one value to at least two ranges to increase the number of processors executing different portions of the program when at least one value is within first range and decrease the number of processors executing the different portions of the program when at least one value is within second range.