A computer-readable, non-transitory storage medium storing instructions that, when executed by one or more computers of a benchmarking computer system, causes the one or more computers to execute a method for benchmarking, the method comprising: receiving a first instruction mix breakdown, IMB, of a plurality of machine-language instructions of a first object code module (115.1), the first IMB indicative of a number of executions (330, 335) of each machine-language instruction of the plurality; receiving a first platform timing data, PTD, for a first target hardware platform, the first PTD comprising a single instruction execution timing data (MC_T) for each instruction of a plurality of machine-language instructions of the first target hardware platform; and calculating based on the first IMB and the first PTD a first performance benchmark, PB, indicative of an expected performance speed of the first object code module (115.1) when executed on the first target hardware platform; characterized in that the method further comprises: generating the first PTD for the first target hardware platform, wherein the generating comprises: executing a selected microcode command of the first target hardware platform a number of times N in succession, wherein the selected microcode command requires at least one parameter, wherein two or more sets of the at least one parameter are determined, the two or more sets of the at least one parameter having different values for the at least one parameter, and the selected microcode command being executed a number of times using the two or more sets of the at least one parameter; identifying a microcode execution time required to execute the selected microcode command of the target hardware platform a number of times N in succession; and dividing the microcode execution time by N to determine a single-pass execution time for the selected microcode command. receiving a first instruction mix breakdown, IMB, of a plurality of machine-language instructions of a first object code module (115.1), the first IMB indicative of a number of executions (330, 335) of each machine-language instruction of the plurality; receiving a first platform timing data, PTD, for a first target hardware platform, the first PTD comprising a single instruction execution timing data (MC_T) for each instruction of a plurality of machine-language instructions of the first target hardware platform; and calculating based on the first IMB and the first PTD a first performance benchmark, PB, indicative of an expected performance speed of the first object code module (115.1) when executed on the first target hardware platform; characterized in that the method further comprises: generating the first PTD for the first target hardware platform, wherein the generating comprises: executing a selected microcode command of the first target hardware platform a number of times N in succession, wherein the selected microcode command requires at least one parameter, wherein two or more sets of the at least one parameter are determined, the two or more sets of the at least one parameter having different values for the at least one parameter, and the selected microcode command being executed a number of times using the two or more sets of the at least one parameter; identifying a microcode execution time required to execute the selected microcode command of the target hardware platform a number of times N in succession; and dividing the microcode execution time by N to determine a single-pass execution time for the selected microcode command. executing a selected microcode command of the first target hardware platform a number of times N in succession, wherein the selected microcode command requires at least one parameter, wherein two or more sets of the at least one parameter are determined, the two or more sets of the at least one parameter having different values for the at least one parameter, and the selected microcode command being executed a number of times using the two or more sets of the at least one parameter; identifying a microcode execution time required to execute the selected microcode command of the target hardware platform a number of times N in succession; and dividing the microcode execution time by N to determine a single-pass execution time for the selected microcode command.