本发明专利技术涉及具有脚本代码的标记内容的快速呈现。提供动态代码生成和协调技术,用于显示包括脚本代码的动态标记文档。一种代码生成过程不仅被代码生成阶段和子阶段的推迟来引导,而且通过解释或对执行的观察来被关于该代码本身的所拥有的各个信息等级所通知,以便不仅生成经修改的代码,而且还为替代情形生成替代代码(例如,生成不同的循环体,此后可取决于浏览器应用所调用的给定函数来容易地换入或换出所述不同的循环体)。通过为用户体验来非对称地确保区分网站呈现和功能的优先级,多核架构进一步改进了用户体验。
【技术实现步骤摘要】
本专利技术涉及通过用于减少与基于脚本代码动态生成可执行代码相关联的代码准备的各阶段(Stage)的传统延迟的各种技术,快速呈现具有脚本代码的标记内容。
技术介绍
随着web浏览体验从用最小的交互性平面地呈现信息向在客户端侧具有大量交互性的更丰富的应用(application)或小程序(applet)体验(或一般地信息显示画面和与显示画面上的对象的更丰富的交互性的混合)不断地发展,基于原本主要为基于客户端上的本机代码的平面信息呈现的旧文档对象模型(DOM)向流动地处理脚本代码(诸如JavaScript对象)的体验的发展存在各种挑战。例如,加速用户体验仍然是一项挑战。 例如,使用过去的飞出菜单,web体验基于与服务器的通信对延迟进行闪烁。脚本使得小的程序能够在进行中(on the fly)修改DOM而无需返回到服务器来获得额外的帮助,例如异步JavaScript和可扩展标记语言(Ajax)。由于开发者和消费者可能想要在不返回到服务器的情况下在进行中做更多事情,使脚本代码在客户端侧上快速执行已成为挑战。因为用户体验集中于使DOM脚本化(scripting),所以缓慢地改变DOM带来不好的交互响应。在过去,由于对包括使任何对象可脚本化的一组接口(iDispatch、iActiveScript等)的OLE自动化的使用,脚本引擎和DOM的本机类之间的通信是不良的。此外,如今各种组件对象模型(COM)对象可被无区别地创建,但这可能是不必要的,减慢了性能。通过避免与服务器的一次或多次往返通信,客户端侧脚本化能够使网页对一旦在客户端浏览器上做出的用户输入更具响应性,客户端侧脚本化一般是指web上在客户端侧通过用户的web浏览器执行而不是在服务器侧(在web服务器上)执行的那类计算机程序。作为示例,客户端侧脚本化是动态超文本标记语言(动态HTML或DHTML)的一部分,使得网页能够被按照脚本化语言(诸如JavaScript (客户端侧JavaScript)和VBScript)脚本化,以取决于用户输入、环境条件(诸如在一天中的时间)或其他变量而具有不同且不断变化的内容。嵌入标记文档内的客户端侧脚本有时被称为“嵌入式脚本”,而包含在分开的文件(这些文件被使用该文件的文档所引用)中的脚本有时被称为“外部脚本”。响应于请求,这些脚本文件被这些文件所在的网络计算设备(诸如web服务器)发送到用户的计算机。关于此,为了执行脚本并显示包括来自脚本的任何可见输出的标记文档,web浏览器与脚本引擎一起工作以解析并编译脚本代码。客户端侧脚本还可包含浏览器响应于某些用户动作(例如,点击按钮)要遵循的指令。通常,这些指令可被遵循而无需与服务器进一步通信。作为一个趋势,web浏览器和网页趋向于采用越来越多的客户端侧脚本化,这对其中用户没有体验到不友善的网页“刷新”的改进的用户界面具有贡献,但是反而看见,例如,表示动画图形交换格式(GIF)文件的图标以及网页的该部分将在很短时间内被更新,其中该图标表示发生对GIF文件的请求。除了 JavaScript能力之外,Ajax还允许客户端机器和脚本化的文档的开发者在后台与网络计算设备(诸如web服务器)通信而不需要请求并呈现新的网页版本。尽管一般会带来用户体验的改进,但是这导致了在设置时间在客户端侧上花太久的其他等待时间。例如,在大量脚本化在网站中被采用的情况下(前100个web特性通常是这样),或者在网络数据传输速率很慢的情况下,或在客户端上的处理另外地受限的情况下,脚本引擎可能花太久来交付所有的可执行代码以用于标记文档的内容的呈现,导致不佳的用户体验。关于此,传统web浏览已按照导致脚本引擎低效地创建可执行代码的方式发展,因为脚本引擎关于脚本代码创建没有区分,导致在脚本引擎完成其工作以呈现脚本化的标记文档时的不想要的等待时间。这种不想要的等待时间可能明显拖用户体验的后腿,特别是在用户可能不需要或想要在开始交互之前等待所有网站功能加载的情况下。如今的脚本引擎和代码生成的上述缺点仅仅旨在提供对常规系统的一些问题的总览,并且不旨在是穷尽性的。在仔细阅读了以下详细描述后,现有技术的其他问题和各非限制性性实施例的对应好处可变得显而易见。
技术实现思路
此处提供了简化的
技术实现思路
以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本
技术实现思路
并不旨在是详尽的或穷尽的。相反,本专利技术的唯一目的在于,以简化的形式提出与一些示例性、非限制性实施例相关的一些概念,作为以下各实施例的更详细的描述的序言。在一示例实施例中,一种方法包括通过计算设备的脚本引擎接收脚本代码,其中所述计算设备的浏览器应用所接收的标记文档包括或引用所述脚本代码,以及确定要应用到由所述脚本引擎应用到所述脚本代码的多方面代码准备过程的至少一个方面(phase)的努力等级。该努力等级可通过以下来确定基于由该浏览器应用对该脚本代码的一部分的调用的预测或分析,或基于在由该浏览器应用对该脚本代码的该部分的历史使用中观察到的模式。在另一示例实施例中,计算设备包括浏览器应用和脚本引擎组件,浏览器应用被配置成显示包括或引用脚本代码的标记文档,脚本引擎组件被配置成接收该脚本代码、分析该脚本代码的一部分或该脚本代码的执行期间该部分的使用来确定一组条件,在该组条件下该部分的性能通过执行经修改的部分而增加,其中,响应于该组条件被满足,该经修改的部分而不是该部分由该浏览器应用执行。在另一示例实施例中,一种计算机可读存储介质包括计算机可读指令,该计算机可读指令响应于执行致使包括至少两个处理核的计算设备执行操作,所述操作包括通过所述至少两个处理核中的第一处理核处理包括或引用脚本代码的标记文档,包括由该第一处理核生成可执行代码,该可执行代码使能由该标记文档的该脚本代码所表示的功能。该操作还包括基于该脚本代码的性质,通过该至少两个处理核中的第二处理核选择性地生成不同于该可执行代码的替代可执行代码,并用该替代可执行代码取代该可执行代码以用于该第一处理核对该脚本代码的进一步执行。生成该替代可执行代码可包括基于以下来选择性地生成该替代可执行代码该脚本代码的至少一个循环的大小与该脚本代码的总大小的比值的函数、该脚本代码的计算强度的测量、或对基于该脚本代码构造的调用树的分析。以下更详细地描述其他实施例和各非限制性性示例、场景和实现。附图描述参考附图进一步描述各非限制性实施例,在附图中图I示出流程图,该流程图 示出用于确定应用到多方面代码准备过程的一个或多个阶段的努力等级的示例方法。图2示出根据各实施例在代码准备期间代码可能经历的各个示例阶段。图3是根据各实施例可能存在的不同努力等级可被应用到的给定方面的多个子等级的框图;图4是示出在一实施例中基于不同执行条件生成代码的替代循环体的框图;图5示出在一实施例中基于动态键入在动态代码生成和执行期间的代码交换(code swapping)的另一非限制性示例;图6是在一实施例中在浏览器应用和脚本引擎之间的示例交换的流程图;图7是示出在一个实施例中在运行解释代码的线程和生成优化代码和相应数据结构集合的线程之间的平衡的框图;图8是示出根据一实施例的为代码优化而重新区分工作项的优先级的框图;图9是示出在一实施例中用于生成用于取代本文档来自技高网...
【技术保护点】
一种方法,包括:通过计算设备的脚本引擎接收(100)脚本代码,由所述计算设备的浏览器应用所接收的标记文档包括或引用所述脚本代码;以及确定(110)要应用到由所述脚本引擎应用到所述脚本代码的多方面代码准备过程中的至少一个方面的努力等级,其中所述确定包括基于以下来确定所述努力等级:基于所述浏览器应用对所述脚本代码的一部分的调用的预测或分析中的至少一个,或基于在所述浏览器应用对所述脚本代码的至少所述部分的历史使用中观察到的模式。
【技术特征摘要】
2011.09.02 US 13/225,1321.一种方法,包括 通过计算设备的脚本引擎接收(100)脚本代码,由所述计算设备的浏览器应用所接收的标记文档包括或引用所述脚本代码;以及 确定(110)要应用到由所述脚本引擎应用到所述脚本代码的多方面代码准备过程中的至少一个方面的努力等级, 其中所述确定包括基于以下来确定所述努力等级基于所述浏览器应用对所述脚本代码的一部分的调用的预测或分析中的至少一个,或基于在所述浏览器应用对所述脚本代码的至少所述部分的历史使用中观察到的模式。2.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于解析所述脚本代码的努力等级。3.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于基于所述脚本代码生成字节码的努力等级。4.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于解释所述脚本代码的努力等级。5.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于优化所述脚本代码的存储器使用的努力等级。6.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于优化所述脚本代码的循环体的努力等级。7.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于优化所述脚本代码的变量的类型的努力等级。8.如权利要求I所述的方法,其特征在于,所述确定(110)包括确定要应用于使用及时编译器来优化所述脚本代码的努力等级。9.一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令响应于执行致使包括至少两个处理核的计算设备执行操作,所述操作包括 通过所述至少两个处理核中的第一处理核来处理(900)包括或引用脚本代码的标记文档,包括通过所述第一处理核生成可执...
【专利技术属性】
技术研发人员:S·卢科,L·拉弗雷尼尔,C·CC·曼,P·A·莱瑟斯,
申请(专利权)人:微软公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。