发明名称 |
基于块计数的过程布局和拆分 |
摘要 |
本发明涉及用于基于块计数的过程布局和拆分的方法、系统和计算机程序产品。本发明的各实施例利用代码块计数来通过最小化沿较频繁执行的路径的分支来提供改进所生成的过程代码的执行时间的代码块总体排序。该总体排序是使用区分了优先级的优先次序关系来优化的。例如,优化该总体排序以最大化代码块链在其他代码块链之后的适当放置。该总体排序还被优化来将零计数(未触碰)代码块置于任何非零(已触碰)代码块之后。 |
申请公布号 |
CN101918917A |
申请公布日期 |
2010.12.15 |
申请号 |
CN200880125324.0 |
申请日期 |
2008.12.29 |
申请人 |
微软公司 |
发明人 |
G·A·瑞琴斯 |
分类号 |
G06F9/06(2006.01)I;G06F9/00(2006.01)I |
主分类号 |
G06F9/06(2006.01)I |
代理机构 |
上海专利商标事务所有限公司 31100 |
代理人 |
顾嘉运;钱静芳 |
主权项 |
一种在包括系统存储器的计算机系统(100)处的用于优化软件过程(111)的执行的方法,所述方法包括:访问包括多个不同代码块(201、202)的可执行过程(111)的动作,所述可执行过程(111)具有起始代码块(201)和将所述过程的执行分成其他代码块(202、203、204)的一个或多个条件语句;访问所述可执行过程(111)的块计数数据(112)的动作,所述块计数数据(112)包括每一代码块的块计数,每一个块计数指示在所述可执行过程(111)的一次或多次先前执行期间代码块被执行了多少次;基于所访问的块计数数据(112)来创建所述可执行过程(111)的一个或多个代码块的一条或多条代码块链(292、293)的动作,创建所述一条或多条代码块链(292、293)包括将任何零计数代码块(211)分成单独的零计数链(297);以及基于优先次序关系(117)来对所述一条或多条代码块链(292、293)进行排序以供置于系统存储器中来优化所述可执行过程(111)的后续执行的动作,包括:创建任何非零计数代码块链的排序(119)的动作,包括根据优先次序关系(117)将任何非零计数代码块链彼此连接;创建任何零计数代码块链的排序的动作,包括根据优先次序关系(117)将任何零计数代码块链(297)彼此连接;随后将零计数代码块链的排序追加到非零计数代码块链的排序的末尾以创建所述一条或多条代码块链的总体排序(118)以使得在所述总体排序被置于系统存储器中时任何非零计数块在系统存储器内都被置于所有零计数块之前的动作。 |
地址 |
美国华盛顿州 |