Patent ID: 8191055

Claim:
A method for optimizing the positioning of software functions in a memory of a computing device, the method comprising: identifying each of a plurality of software functions and a respective quantity of calls between the identified software functions; positioning two of the plurality of identified software functions sharing a highest quantity of calls next to each other in the memory to form a defined group of software functions, the quantity of calls between a first software function and a second software function of the plurality of software functions respectively representing a quantity of times the first software function calls the second software function when the first software function is executed; updating a quantity of calls between a newly formed group and other of the plurality of software functions, the updating comprising selecting calls of software functions included in the newly formed group based on locations of the software functions in the newly formed group; and comparing a size of a window reflecting a size of segments of the memory with a size of the plurality of software functions of the newly formed group and of another of the plurality software functions or group of software functions, repeating the positioning and the updating for the plurality of software functions and/or defined groups of software functions sharing successively next highest quantity of calls in a next calculation round until all of the plurality of software functions are stored in a sequential order in the memory, wherein the positioning and the updating are performed on the basis of the size of the plurality of software functions and the quantity of calls between the plurality of software functions, wherein in response to the software functions of the newly formed group sharing a quantity of calls with another of the plurality of software functions or defined groups of software functions, updating the quantity of calls between newly formed group of software functions and other of the plurality of software functions or between newly formed groups of software functions and other groups of software functions is performed on the basis of a size of the software functions of the newly formed group and on the basis of another of the plurality of software functions or group of software functions, and wherein at least one of identifying, positioning, and updating is performed using at least one processor.