CN102567067A - 减少动态输出中可察觉暂停的设备及方法 - Google Patents
减少动态输出中可察觉暂停的设备及方法 Download PDFInfo
- Publication number
- CN102567067A CN102567067A CN201110299574XA CN201110299574A CN102567067A CN 102567067 A CN102567067 A CN 102567067A CN 201110299574X A CN201110299574X A CN 201110299574XA CN 201110299574 A CN201110299574 A CN 201110299574A CN 102567067 A CN102567067 A CN 102567067A
- Authority
- CN
- China
- Prior art keywords
- output
- group
- compiling
- instruction
- dynamically
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Abstract
本发明公开了一种减少动态输出中可觉察暂停的设备及方法。一种用于减少动态输出中可觉察暂停的机器执行方法,包括:确定动态输出是否正在被呈现给用户,包括:在输出被呈现给用户的时刻调用输出指示器,将输出频度确定为输出指示器在单位时间内的调用事件的计数,以及将输出频度与阈值频度进行比较,从而确定输出频度是否超出阈值频度;以及响应于确定动态输出正被呈现给用户,使一组指令的编译被挂起,从而使一组指令以字节码被解释执行。
Description
本申请是分案申请,其母案申请的申请号为200710089544.X,申请日为2007年3月29日,发明名称为“在动态输出中减少由动态编译所引起的可觉察暂停的机制”。
技术领域
本发明涉及编译处理技术,尤其涉及在动态输出中减少由于动态编译所引起的可察觉暂停的方法和装置。
背景技术
本部分所描述的方法是可推行的,但不一定是以前被考虑和推行的方法。因此,除非另外说明,否则,就不应该臆断,本部分所描述的任何方法由于其内容包含于本部分而被认为是现有技术。
诸如Sun公司的Java的程序设计语言可以让程序员用一种语言在多种平台上相对容易地开发应用程序,这就导致产品开发消耗更多资源而不是保证相互可操作性。
在一典型的Java实施中,只要Java应用程序是可执行的,一个Java虚拟机(JVM)的实例也同时启动来支持Java应用程序的运行。JVM,其可以是原码(native code)(本机代码或原始机器码)形式,解释执行Java字节码。Java字节码来源于Java源代码,是由人工程序员编写和理解的。字节码起着代码的中间级作用。Java程序可以在正执行JVM的任何平台上运行。
有时,更希望Java应用程序是用原始机器码(native machinecode)(本机代码)形式而不是JVM解释字节码形式来执行的。在这些例子中,字节码可以通过编译器编译为原始机器指令码(本机代码),编译器的典型例子为just-in-time(JIT)。这样一来,JVM可以更加快了特定应用程序的运行速度(而不是使用Java解释器执行应用程序的Java字节码,该应用程序直接通过速度更快的处理器执行)。
JVM包括在某些间隔触发将字节码向下编译成为原始机器码的采样机制。例如,一个采样机制可以被设置成每隔30毫秒触发一次编译。然而编译会消耗用于其他处理的系统资源。于是,为了使编译的影响最小化,JVM可设定每次编译可能只进行5毫秒的限制。这种情况特别适用于只够一次运行一个处理器线程的资源的单个处理器系统。通过采样机制限制编译时间,JVM可以分配更多的时间给处理器线程而保证编译不增加系统资源的负担。
采样机制的缺陷之一是编译的静态特性。编译被设定在特定时刻发生并限制在某一持续时间内。然而。对于如性能测试之类的处理器敏感的程序,就要编译尽可能多的方法以便最大提高执行效率。在这些例子中,除采样之外,一些虚拟机还使用“热方法(hotmethod)”(在某一时间间隔内被频繁调用的方法)的动态编译。热方法通过跟踪最近执行的方法列表而被编译,该列表中的每一个方法都被标记,使得该方法被编译为原始机器码来执行而不是解释执行。
然而,热方法的动态编译的缺陷之一是编译器快速消耗不成比例数量的系统资源。若有大量热方法存在时就更是如此。这会对其他系统功能,如视频和音频动态输出过程,起副作用。例如,若没有足够的处理能力,视频动画帧就不能以必要的频率刷新,使得动画查看程序察觉到不想要的间断,暂停或黑屏。
综上所述,很明显,无论是静态采样方法还是热方法的动态编译,单从自身都无法提供最满意的效果。因此,就需要用于管理编译的改进机制。
发明内容
根据本发明的实施例,提供了一种在动态输出中减少由于动态编译所引起的可察觉暂停的方法。动态输出被定义为频繁发生变化的输出。动态输出的例子可能是运动视频、动画或音频。根据该方法,在具有虚拟机的系统上运行的应用程序发送输出到用户接口以便呈现给用户。无论何时应用程序发送这样的输出,它都调用一种方法来通知虚拟机这种输出已经发生。如此输出已经发生的通知是通过虚拟机来传送给跟踪输出频度(frequency of the output)的动态输出监视器的。
动态输出监视器把输出的频度与阈值比较以确定是否为动态输出,以及确定虚拟机的编译是否应该被挂起或连续。如果输出的频度超过了该阈值,动态输出监视器就改变全局动态输出指示器的值,以通知其他的系统组件挂起编译。特别地,全局动态输出指示器用于通知系统中的编译器是否继续标识方法为编译。
当系统解释器收到把方法处理的控制传送到一个编译器的指令时,编译就发生了。一旦处理控制被传送到编译器,编译器检查全局动态输出指示器以确定动态输出监视器是否已经请求挂起编译。如果是,则编译器将通过不标识任何方法为编译来挂起编译。如果某一当前被解释方法日志中有“热方法”则该方法通常被标识为编译。当前被解释方法是指被Java解释器刚刚执行过的那些方法。如果不标识方法为编译则那些方法下一次仍然被解释器处理,解释器也不把方法处理的控制传送给编译器;这样,编译就不执行。由于编译没有执行,更多资源就可以用于给用户的动态输出。这也就减少了动态输出中用户将经历可察觉暂停的可能性。以此方式,本发明的实施例允许热方法被动态编译。然而,当动态输出发生时,热方法的编译就被挂起以提供需要进行动态输出的处理资源给输出呈现机制。通过该方式自动控制动态编译,就有可能获得热方法编译好处而不会负面影响系统其他部分的操作。
附图说明
本发明通过附图实例来图示说明但不限于此,附图类似的标号表示类似的元素,其中:
图1是本发明实施例可以在其中执行的系统概况;
图2是根据本发明的实施例所显示的动态输出监视器的操作流程图;
图3是根据本发明的实施例的解释器的操作流程图;
图4是根据本发明的实施例所显示的编译器的操作流程图;
图5A是根据本发明实施例在采样机制操作期间的处理线程的框图;
图5B是根据本发明实施例在热方法动态编译操作期间的处理线程的框图;以及
图6是本发明实施例可以在其中执行的通用计算机系统框图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了大量的细节,以便彻底了解本发明。然而很清楚,本发明没有这些细节也是可实现的。在其他例子中,用框图形式示出公知结构和装置以避免对本发明不必要的模糊理解。
结构概况
先看图1,显示的是本发明实施例在其中执行的系统100的框图,为了方便图示,本发明实施例参考在系统100中JVM 101进行描述。然而应该注意的是,本发明并不局限于这样的实施例,也不必被JVM执行。另外,能够执行本文所述处理过程的任何系统都可能用上。系统100的例子可以包括:手持计算装置,个人数字助理,移动电话,便携式计算机,PC计算机,或执行所述处理过程的其他任一类型的计算机系统。
如所示出的,JVM 101包括:解释器102和编译器106等等。解释器102和编译器106被JVM 101用来处理由系统100上的应用程序150调用的方法。解释器102通过执行字节码来解释性地执行方法。此外,解释器102使用执行日志104来记录方法的运行过程。在处理方法的过程中,解释器102还负责确定处理控制是否应该传送给编译器106。
编译器106在被称为编译的处理过程中将字节码编译成原码。在编译期间,调用编译器106以将方法的字节码翻译成被一个或多个系统100处理器顺序执行的原始可执行码(native executable code)(本机代码)。另外,编译器106还负责多个其它任务。例如,根据一个实施例,编译器106还负责确定是否在执行日志104中为将来的编译标识方法。
执行日志104包含了解释器102当前所执行过的方法的列表,执行日志104中所记录的方法被标识为“热方法”,该方法在一定间隔内被解释器102特别频繁地执行过。例如,根据一实施例,执行日志104可能是一个具有20个队列空间大小的队列,而每一个队列空间都代表最近被解释的方法。同理,执行日志104只跟踪最后20个被解释器102执行的方法。无论方法被解释器102何时执行,该方法都被记录在执行日志104中。后续附加方法的处理使最起始的方法被推出执行日志104。然而,如果最起始的方法在20个方法之内又一次被执行,它便重新进入执行日志104并保留为热方法。
执行日志104中的热方法被编译器106标识为编译。例如,只要它从解释器102得到了处理控制,编译器106就通常把执行日志104中的所有方法都做标识为编译。然而,为了保持热方法编译和用于将动态输出呈现给用户(对用户进行动态输出)的处理能力之间的平衡而不产生可察觉的暂停,编译器106还监控动态输出的存在。动态输出可以是任意类型的输出,如视频,动画,音频或其他类型的频繁变化的输出。根据动态输出是否正在进行,编译器106可以通过判定不把执行日志104中的方法标识为编译来动态控制热方法的编译。
JVM 101还包括采样中断108,采样中断是用于被编译器106触发方法编译的一种机制。为了实现此项,在一个实施例中,采样中断108给方法执行中解释器102所检查到的全局变量赋值,该全局变量的值是用来指示采样触发器是否有标志。采样触发器让解释器102识别处理线程的控制需要转给编译器106进行编译。当解释器102正在处理或解释该方法时,解释器102根据所赋给全局变量的值来确定采样中断108是否已经标志采样触发器。如果采样触发器已经有标志,则解释器102将把处理线程的控制转交给编译器106。
类似地,通过标识在执行日志104中的方法,编译器106使得采样中断108所用的同一个全局变量通知解释器102是否将处理控制传送给编译器106。因此,当解释器102再次执行被标识的方法时,解释器102将识别出采样触发器已经被标志,从而把处理控制传送给编译器106。一旦编译器106有了处理控制,编译器106就确定是否标识执行日志104中的方法。为了确定是否标识执行日志104中的方法,编译器106首先确定动态输出是否正在进行。为此,JVM 101必须通过与应用程序150的通信来识别动态输出正在进行。
应用程序150在系统100上运行并且调用由JVM 101来执行的方法。在一实例中,当应用程序150向用户接口进行诸如多媒体展示期间的显示和音频发生改变等输出的任何时刻,应用程序150都将调用一输出指示器来通知JVM 101有关于该输出。例如,假设应用程序150是一个在系统100上运行的图形游戏应用程序。应用程序150将会察觉到,游戏的视觉输出已发生一帧接一帧的变化并且调用输出指示器,其用来通知JVM 101的组件输出正在进行。在一实施例中,当输出指示器被调用时,JVM 101使用动态输出监视器110来处理输出指示。
动态输出监视器110是用来监视应用程序150所进行的输出指示器的调用。例如,当应用程序150调用输出指示器的每一时刻,动态输出监视器110均使用时钟112来日志记录该现象的发生,以便跟踪来自应用程序150报告的输出频度。如果动态输出监视器110确定输出频度已超出了特定的阈值,如每分钟调用的某些次数,则动态输出监视器110会对全局变量的值进行设置以指示所述正显示的输出为动态输出。
动态输出监视器110连续监视所有应用程序进行的输出指示器的调用。如果输出指示器的调用降到了所设阈值之下,动态输出监视器110就可改变全局变量以指示所述正在显示的输出不是动态输出。
利用全局变量,编译器106可以确定是否将执行日志104中的方法标识为编译,从而在进行动态输出过程期间动态地控制方法的编译。
功能概况
监控动态输出
现在参看图2,示出了根据本发明的实施例所展示的动态输出监视器110和应用程序150操作过程的流程图。在步骤202,当应用程序150向系统100的用户接口发送输出时,应用程序150也调用输出指示器。例如,发送给用户接口的输出可能会引起显示屏像素的变化或产生新的一组音频数据。因此,根据一个实施例,响应于显示像素和音频数据的变化,应用程序150负责调用输出指示器来通知JVM 101有关于输出。根据一个实施例,输出指示器可以是一段定制Java类的实例,用来指示到JVM 101输出的出现。
当应用程序150调用输出指示器时,JVM 101把指示器指向动态输出监视器110。因此,在步骤204,动态输出监视器110监视输出指示器的调用。利用时钟112,动态输出监视器110确定出在一定单位时间段内被报告输出的频度。根据一个实施例,动态输出监视器110通过创建一个表现出在一定单位时间内方法调用数量的比率来动态监视输出指示器调用。例如,动态输出监视器110可每秒钟创建一个比率值以计算每秒钟输出指示器被调用的次数。因此,例如,若输出指示器每秒被调用四次,则比率的值就报告为4。
利用这个比率,动态输出监视器110将该比率值与比率阈值比较以确定动态输出当前是否正在进行。比率阈值代表的是,编译应被挂起之前每单位时间内所检测到的输出次数的最大允许值。比率阈值越高,编译就越有可能被允许出现。类似的,较低的比率阈值保证编译几乎不可能引起动态输出进行期间的间断或暂停。
根据一个实施例,比率阈值的值可以被系统100,JVM 101,或诸如应用程序150的其他任何组件所自动设置和自动改变。例如,系统100的任何组件都可以确定,在任意给定的时间点,以提高效能为目的的方法编译的好处都多于动态输出中任何间断或暂停的影响。因此,如果比率阈值的初始值设置为2,系统100的一个组件就可以把该值增加到5。在另外的实施例中,比率阈值也可以被系统100的用户手工设置。
请注意,虽然动态输出监视器110可以通过比较上述比率和某一比率阈值来确定动态输出是否正在进行,但本发明并不局限于这样一种实施例,并且动态输出监视器110可以通过跟踪应用程序150对输出指示器进行调用的任何其他方法来确定动态输出是否正在进行。
再请看图2,在步骤206,动态输出监视器110使用上面描述的处理过程来确定动态输出是否正在进行。做出如此确定后,根据一实施例,动态输出监视器110将会改变全局变量的值。该变量之所以被定义为“全局”变量是因为它可被系统100的任何组件或对象所访问。全局变量用于把动态输出的存在通信传送给系统100上的所有组件或对象。该全局变量在后文中称做“全局动态输出指示器”。因此,一旦确定了动态输是否出正在进行,动态输出监视器110就在步骤207或步骤208分别将全局动态输出指示器的值赋为0或者1。
如果比率阈值高于输出指示器调用的频度,则在步骤207,将全局动态输出指示器的值赋为0。在这个例子中,系统100的其他组件可被配置来识别出,如果全局动态输出指示器的值被赋为0则没有动态输出正在进行。
如果输出指示器调用的频度高于比率阈值,则在步骤208,将全局动态输出指示器的值赋为1,并且,系统100的其他组件可被配置来识别出,全局动态输出指示器的值为1,这就指示了有动态输出正在进行。
因为动态输出监视器110动态地将全局动态输出指示器的值设置为0或者1,系统100和JVM 101的组件就会不断随着动态输出是否正在进行而更新。此外,虽然所描述的全局动态输出指示器的值可以设置为0或1,但本发明并不局限于这一实施例,全局动态输出指示器的值可以被设置为任何值。例如,在其他实施例中全局动态输出指示器的值可以被设置为代表动态输出频度的任意数字值。具体来说,值为0可表示当前没有正在进行的动态输出,而值为5可表示当前正在进行的动态输出频度很高。因此,在0和5之间的任意值则表示不同的动态输出频度。在一实施例中,利用全局动态输出指示器的值,动态编译可以在动态输出时根据动态输出的频度而可变地得到控制。
方法的解释处理
当动态输出监视器110监控动态输出的时候,应用程序150正在调用由JVM 101执行的方法。举例假设,方法n近来已被当前运行在系统100上的应用程序150所调用。参看图3,示出了根据本发明实施例中所示出的解释器102的操作流程框图。当方法n被调用时,JVM 101就将该方法传送给解释器102以解释执行。在步骤302,解释器102用字节码形式来解释执行方法n。
在解释执行期间或其他任意时间,在步骤304,方法n的条目就被放置在执行日志104中,由于方法n的条目已由执行日志104生成,当处理控制转向编译器106时,方法n通常将会被标识为编译。正像下面所描述的,编译器106根据动态输出是否正在进行而负责给执行日志104中的任何方法做标识。由于方法n已经被标识为编译,则当它下一次解释执行时,解释器102就把处理控制转向编译器106,使得方法n用本文所述的处理过程来被编译。
当把方法n放置在执行日志104以后,在步骤306,解释器102确定采样触发器是否已经有标志,采样触发器用来指示解释器102是否应该将处理控制移交给编译器106。在一实施例中,采样触发器在以下两种情况被标志:(1)采样机制已经被触发或(2)已被编译器106标识为编译的方法当前正在被解释器102解释执行。两者的唯一区别在于,前者的采样机制是强制在特定间隔给采样触发器做标志的,而后者中的热方法是根据编译器106标识为编译的方法在任一给定的时间给采样触发器做标志的。
根据一实施例,为了确定采样触发器是否已被做了标志,解释器102就检查下文被称做“全局编译变量”的另一个全局变量的值。全局编译变量通知解释器102是否把处理控制过程转向编译器106。如果全局编译变量值为1,则采样触发器就已经被做了标志,而且解释器102将把处理控制过程转向编译器106。反之,全局编译变量值保持为0,如果全局编译变量值为0,则解释器102解释执行完方法n,并且在步骤310解释执行下一个被调用的方法n+1。
然而,在步骤306,如果由于编译变量的值为1而确定采样触发器已经被做了标志,则在步骤307,解释器102就把处理控制转向编译器106。
方法的动态编译
根据一实施例,系统100是一套单处理线程系统,即系统100中的组件在其没有获得处理控制时就不会执行任何动作。因此,如前面描述,编译器106在其没有收到解释器102的处理控制时也不会执行任何动作。当编译器106接收到处理控制时,它就在把处理控制返回解释器102之前执行本文所述的一些操作。
参看图4,示出了根据本发明的一个实施例中所示出的编译器106操作流程演示框图。当编译器106在操作时,即在获得处理控制的时候,在步骤402,所述编译器就检查曾被上述动态输出监视器110所设置的全局动态输出变量的值。于是,根据一实施例,在步骤404,编译器106通过检查被JVM 101设置的全局介质变量的值来确定正被显示的输出是否为动态输出。例如,假若全局动态输出变量被赋值为0,编译器106就会确定动态输出当前没有进行,而在步骤406,如同编译器106执行正常操作时所做的那样,继续给执行日志104中的每个方法都标识为编译。
根据一实施例,当方法被再次调用时,对执行日志104中的方法进行标识会导致采样触发器被标志。在一个实施例中,这是通过把代表变量声明的一条或多条指令插入到正被调用的方法的实例之中来实现的。当方法下一次被JVM 101调用时,所述变量声明就会引起特定变量的值发生改变。
例如,在一实施例中,假如方法n被标识为编译,编译器106就会发出变量声明指令,以在方法n下次被调用时将全局编译变量的值设置为1。于是,当解释器102在执行方法n时,根据图3描述的处理过程,由于全局编译变量的值已经设置为1(见图3的步骤306),所以解释器102就确定采样触发器已经被标志。作为响应,解释器102就将处理控制传送给编译器106。这也使编译器开始编译方法n。
然而,如果动态输出正在进行,编译器106就将不会对执行日志104中的任何方法做标识,以使得在这些方法执行期间,处理控制不传送回编译器106。请往回看步骤404,如果由于全局动态变量指示器已经被设置为1,编译器106确定动态输出正在进行,则编译器106会跳过步骤406而直接处理步骤408。因此,当确定动态输出正在进行时,编译器106就不会对执行日志104中的任何方法做标识,这意味着当这些方法被调用时,全局编译变量的值不会被设置为1。当解释器102处理这些方法时,它就将确定该编译触发器没有被标志。
在步骤408,编译器106通过把方法n的字节码指令翻译成系统100的一个或多个处理器可以本机执行的原码来编译方法n。另外,除了编译当前的方法n外,编译器106还可以恢复对以前方法的编译。例如,根据一实施例,JVM 101把编译允许出现的时间单位限制为5毫秒。
假设最长的编译时间是5毫秒。如果编译器106以前在编译方法n-1且在5毫秒内没有完成该项编译,编译器106就会给方法n-1的编译过程做出标记,并将处理控制返回解释器102。然而,当编译器106再次获得处理控制时,它就可以在其编译挂起点上恢复方法n-1的编译。根据一实施例,编译部分编译完成的方法的优先级高于那些还没有开始编译的方法。因此,即便编译器在执行方法n期间获得了处理线程的控制,方法n-1也要首先进行编译,而编译器106将方法n排在下一个待编译的队列位置。
另外,如果方法n-1已经被全部编译完成,则编译器106使得现以原码的形式出现的方法n-1在该方法下次被JVM 101调用时执行,并继续编译新方法或者那些已被部分编译的方法。
在步骤410,编译器106将全局编译变量复位为0。编译器106给全局编译变量复位是为了确保解释器102只有根据采样机制的要求或由于某些方法n已经被标识为编译时,才把控制传送给编译器106。因此,由于全局编译变量被复位为0,解释器102在下一个方法n+1执行之前不再传送处理控制给编译器106,除非(1)采样触发器已被标志,或(2)方法n+1已被编译器106标识为编译,从而使全局编译变量再次被赋值为1。
此外,根据一实施例,当编译时间达到了JVM 101所设置的最大时间限制时,编译器106就把全局编译变量复位为0。例如,编译可以被限制为最长时间为5毫秒。因此,如果自从获得了处理控制而使时间过了5毫秒,编译器106就将执行步骤410,将编译变量复位为0,并且,在步骤412把处理控制返回到解释器102。
贯穿图2-4所描述的处理过程,在JVM 101和系统100的任何应用程序150的操作期间是连续运行的。利用全局动态输出指示器,根据被应用程序150所正在处理的动态输出的数量,使编译被动态地禁止。这样一种处理过程的结果进一步在图5和图6中示出。
参看图5A,示出了根据实施例所示出的在采样机制工作期间的处理线程流程图。图5显示的是采样机制操作期间遵循处理时间线的处理线程500A。根据实施例,采样机制被配置为以设定的间隔如30毫秒(ms)来触发方法的编译。因此,每30毫秒,解释器102就将处理线程500A的控制传送给编译器106。然而,采样机制还要被配置来限制编译量以节省系统资源。因此,在一实施例中,编译的时间限制为5毫秒。以这样的方式,当第30毫秒时控制传送给编译器106,编译执行到第35毫秒为止。在这一点,编译被挂起,而线程500A的控制就被返回到解释器102。
图5B是根据一实施例所示出的在采样机制和热方法的动态编译同时工作时的处理线程流程图。在图5B中,处理线程500B是热方法编译时的处理线程。类似于线程500A,编译根据采样机制的方式,在30毫秒和35毫秒之间发生。然而,与线程500A不同的是,编译在35毫秒到60毫秒之间并不被挂起,这是因为这段时间编译器106可以触发热方法的编译。例如,在线程500B上,A部分和B部分表示方法在执行日志104中被标识为编译。此外,根据一实施例,由于没有给热方法的动态编译设置时间,所以,在执行日志中有标识的方法的编译会在线程500B中占用很长时间单位。如A,B,C,和D等部分所占用在60毫秒到90毫秒之间时间单位的一大部分。由于大量时间消耗在编译线程500B方法上,因此,更多系统资源用在了编译上并可影响到动态输出特性。由于没有足够的系统资源用于动态输出,用户就可能察觉到动态输出过程的暂停或间断。
然而,上面描述的减少动态编译期间可察觉暂停的方法,可以让编译器106有选择地在执行日志104标识方法。例如,若编译器106不在执行日志104中标识任何方法,则由于处理控制从来不能如上所述地传送给编译器106,从而使编译在35毫秒到60毫秒之间不会发生。反而却非常类似于500A,编译被限制在了30毫秒到35毫秒之间的采样机制。
用此方式,本发明允许对在以处理线程500A和处理线程500B为特征的情形之间进行控制。根据动态输出是否正在进行的情形,编译器106就可动态地控制方法的编译,以便于减少可察觉的暂停。
硬件概况
图6示出本发明一个实施例在其中可执行的计算机系统600的框图。计算机系统600包括用于信息交换的总线602,以及由总线602连接的用于处理信息的一个或多个处理器604。计算机系统600还包括主存储器606,诸如随机访问存储器(RAM)和其他动态存储装置,它们由总线602连接用于存储信息和将被处理器604执行的指令。主存储器606还可以用于存储处理器604指令执行期间的临时变量和其它中间信息。计算机系统600还可以包括只读存储器(ROM)608或其它静态存储装置,它们由总线602连接用于存储静态信息和被处理器604执行的指令。外围存储装置610,如磁盘或光盘,也被提供并连接在总线602以用于存储信息和指令。
计算机系统600可经由总线602连接到用于将信息显示给计算机用户的显示器612。包括字母数字和其他键的输入装置614连接到总线602,以用于将信息和命令选择传输到处理器604。另一种用户输入装置是诸如鼠标、跟踪球或光标方向键的光标控制器616,其用于将方向信息和命令选择传输到处理器604,并用于控制在显示器612上的光标移动。该输入装置通常具有在第一轴(例如x)和第二轴(例如y)这两个轴上的两个自由度,这就允许所述装置在一个平面内指定位置。
在计算机系统600中,总线602可以是允许信息、信号、数据等在各种组件之间交换的任何机制和/或介质。例如,总线602可以是一组携带电信号的导线。总线602也可以是在一个或更多的组件之间传送无线信号的无线介质(例如空气)。总线602还可以是连接一个或多个组件的网络连接。使信息、信号、数据等能够在各种组件之间交换的任何机制和/或介质都可以用作总线602。
总线602还可以是这些机构/介质的组合。例如,处理器604可以和存储装置610进行无线通信。在这种情况下,从处理器604和存储装置610的立场来看,总线602将会是诸如空气的无线介质。再者,处理器604可以和ROM 608进行电容性地通信。进一步来说,处理器604可以经由网络连接和主存储器606进行通信。在这种情况下,总线602将会是网络连接。再进一步说,处理器604可以经由一组导线和显示器612进行通信。在这个例子中,总线602将会是这一组导线。因此,取决于所述各种组件如何互相通信,总线602就可以采取不同的形式。如图6中所显示的总线602在功能上代表能够使信息、信号、数据等在各种组件之间交换的全部机构和/或所有介质。
本发明涉及用于执行本文所述技术的计算机系统600的使用。根据本发明的一个实施例,通过计算机系统600来执行这些技术,以响应于执行含在主存储器606中的一个或多个指令的一个或多个序列处理器604。这种指令可以从诸如存储装置610的另一个机器可读的介质读入主存储器606。执行含在主存储器606中的指令序列以使得处理器604执行本文描述的处理步骤。在其它实施例中,可以用硬连线电路代替软件指令或将硬连线电路与软件指令相结合以实施本发明。因此,本发明的实施例并不限于硬件电路和软件的任何具体组合。
本文使用的术语“机器可读介质”指的是参与提供使机器以具体方式运转的数据的任何介质。在使用计算机系统600而实施的一个实施例中,例如,各种机器可读的介质参与将指令提供给处理器604以用于执行。这种介质可以采用多种形式,包括但不限于非易失性介质、易失性介质和传输介质。举例来说,非易失性介质包括诸如存储装置610的光盘或磁盘。易失性介质包括诸如主存储器606的动态存储器。传输介质包括同轴线缆、铜线和光纤,还有其它构成总线602的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信中生成的那些波。
机器可读介质的通常形式包括:例如,软盘、移动盘、硬盘、磁带或其他磁性介质、CD-ROM、DVD或任何其他光存储介质、穿孔卡、纸带、任何其他具有孔状式样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其他存储芯片或盒式磁带、下文中描述的载波,或计算机能从中读取的任何其他介质。
各种形式的机器可读介质可参与将一个或多个指令的一个或多个序列传送到理器604来执行。例如,指令可最初承载在远程计算机的磁盘上。该远程计算机能够将所述指令装载进其动态存储器并使用调制解调器通过电话线发送这些指令。计算机系统600的本地调制解调器能够接收电话线上的数据并使用红外发射器将数据转换为红外信号。红外探测器能够接收红外信号中携带的数据并且适当的电路能够将数据放到总线602上。总线602将数据传送到主存储器606,处理器604从主存贮器606中取得数据并执行指令。由主存储器606所接收的指令可以在处理器604执行之前或之后,可选地存储在存储装置610上。
计算机系统600还包括连接到总线602的通信接口618。连接到与本地网622相连的网络链路620的通信接口618提供双路数据通信。例如,通信接口618可以是综合服务数字网络(ISDN)卡或调制解调器,用于提供到相应类型的电话线的数据通信连接。作为另一个实例,通信接口618可以是局域网(LAN)卡,用于提供到兼容的LAN的数据通信连接。也可以实现无线链路。在任何这样的实施中,通信接口618都发送和接收带有表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
传统上,网络链路620通过一个或多个网络向其他数据装置提供数据通信。例如,网络链路620可以通过本地网622提供到主机624或到由互联网服务商(ISP)626所操作的数据设备的连接。ISP626又通过现在通常称作“互联网”628的全球分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电信号、电磁信号或光信号。将数字数据传送到计算机系统600和从计算机系统600传送数字数据的信号,即,通过各种网络的信号、在网路链路620上的信号和通过通信接口618的信号,是传输信息的载波的示例性形式。
计算机系统600能够通过网络、网络链路620和通信接口618发送消息和接收数据(包括程序代码)。在互联网实例中,服务器630可通过互联网628、ISP 626、本地网622和通信接口618传输被请求的应用程序代码。
当代码被接收到时,所接收的代码就可以由处理器604执行并存储在存储装置610或其他非易失性存储装置中以用于以后执行。这样,计算机系统600可获得载波形式的应用程序代码。
在这点上,应该注意到,尽管已经参考具体实施例描述了本发明,但是不应解释为本发明受到这样的限制。在不脱离本发明精神的情况下,得益于本说明书的本领域普通技术人员可以对本发明进行各种修改。因此,本发明不应被用于示出本发明的具体实施例所限制,而仅由公布的权利要求及其等同物所限定。
Claims (10)
1.一种用于减少动态输出中可觉察暂停的机器执行方法,包括:
确定动态输出是否正在被呈现给用户,包括:
在输出被呈现给所述用户的时刻调用输出指示器,
将输出频度确定为所述输出指示器在单位时间内的调用事件的计数,以及
将所述输出频度与阈值频度进行比较,从而确定所述输出频度是否超出所述阈值频度;以及
响应于确定动态输出正被呈现给所述用户,使一组指令的编译被挂起,从而使所述一组指令以字节码被解释执行。
2.根据权利要求1所述的机器执行方法,其中,动态输出是指包括运动视频和音频那一组中的一个。
3.根据权利要求1所述的机器执行方法,其中,所述编译被挂起包括:
使计算机系统停止将所述一组指令标识为编译,其中,
标识所述一组指令,使得所述计算机系统下一次处理该经标识的一组指令时对该经标识的一组指令进行编译。
4.根据权利要求3所述的机器执行方法,其中,编译使得所述一组指令从第一种格式转换为第二种格式,其中,所述第二种格式被用于本机执行所述一组指令。
5.根据权利要求3所述的机器执行方法,其中,执行日志列出最近被执行的多个指令组,以及其中,使所述计算机系统停止将所述一组指令标识为编译包括:使所述计算机系统停止标识在所述执行日志中最近被执行的任一指令组。
6.一种用于减少动态输出中可觉察暂停的设备,包括:
用于确定动态输出是否正在被呈现给用户的装置,包括:
用于在输出被呈现给所述用户的时刻调用输出指示器的装置,
用于将输出频度确定为所述输出指示器在单位时间内的调用事件的计数的装置,以及
用于将所述输出频度与阈值频度进行比较从而确定所述输出频度是否超出所述阈值频度的装置;以及
用于响应于确定动态输出正被呈现给所述用户,使一组指令的编译被挂起,从而使所述一组指令以字节码被解释执行的装置。
7.根据权利要求6所述的设备,其中,动态输出是包括了运动视频和音频那一组中的一个。
8.根据权利要求6所述的设备,其中,用于挂起编译的装置包括:
用于使计算机系统停止将所述一组指令标识为编译的装置,其中,标识所述一组指令,使得所述计算机系统下一次处理该经标识的一组指令时对该经标识的一组指令进行编译。
9.根据权利要求8所述的设备,其中,所述编译使得所述一组指令从第一种格式转换为第二种格式,其中,所述第二种格式被用于本机执行所述一组指令。
10.根据权利要求8所述的设备,其中,执行日志中列出最近被执行的多个指令组,以及其中,用于使所述计算机系统停止将所述一组指令标识为编译的所述装置包括:用于使所述计算机系统停止标识在所述执行日志中最近被执行的任一指令组的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/395,985 US7784041B2 (en) | 2006-03-30 | 2006-03-30 | Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation |
US11/395,985 | 2006-03-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710089544XA Division CN101046754B (zh) | 2006-03-30 | 2007-03-29 | 在动态输出中减少由动态编译所引起的可察觉暂停的机制 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567067A true CN102567067A (zh) | 2012-07-11 |
CN102567067B CN102567067B (zh) | 2015-01-14 |
Family
ID=38229058
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710089544XA Active CN101046754B (zh) | 2006-03-30 | 2007-03-29 | 在动态输出中减少由动态编译所引起的可察觉暂停的机制 |
CN201110299574.XA Active CN102567067B (zh) | 2006-03-30 | 2007-03-29 | 减少动态输出中可察觉暂停的设备及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710089544XA Active CN101046754B (zh) | 2006-03-30 | 2007-03-29 | 在动态输出中减少由动态编译所引起的可察觉暂停的机制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7784041B2 (zh) |
EP (1) | EP1840740B1 (zh) |
JP (1) | JP5324050B2 (zh) |
CN (2) | CN101046754B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8330769B2 (en) | 2009-01-09 | 2012-12-11 | Disney Enterprises, Inc. | System and method for monochromatic tinting using saturation maps |
JP2010191734A (ja) * | 2009-02-19 | 2010-09-02 | Hitachi Software Eng Co Ltd | 画像再生装置及び中間語プログラム実行方法 |
US9075667B2 (en) * | 2009-05-21 | 2015-07-07 | Microsoft Technology Licensing, Llc | Dynamic binding directed by static types |
US9996325B2 (en) | 2013-03-06 | 2018-06-12 | Qualcomm Incorporated | Dynamic reconfigurable compiler |
US9027007B2 (en) * | 2013-03-06 | 2015-05-05 | Qualcomm Incorporated | Reducing excessive compilation times |
JP6555981B2 (ja) * | 2015-08-24 | 2019-08-07 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
CN1504881A (zh) * | 2002-12-02 | 2004-06-16 | 三星电子株式会社 | 爪哇执行设备和爪哇执行方法 |
CN1613058A (zh) * | 2001-11-07 | 2005-05-04 | 富士通株式会社 | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0417034A (ja) * | 1990-05-10 | 1992-01-21 | Matsushita Electric Ind Co Ltd | タスクスケジューリング装置 |
US5481708A (en) * | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
US5946487A (en) * | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
US5996060A (en) * | 1997-09-25 | 1999-11-30 | Technion Research And Development Foundation Ltd. | System and method for concurrent processing |
US5970249A (en) * | 1997-10-06 | 1999-10-19 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
US6654931B1 (en) * | 1998-01-27 | 2003-11-25 | At&T Corp. | Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6324687B1 (en) * | 1998-12-03 | 2001-11-27 | International Business Machines Corporation | Method and apparatus to selectively control processing of a method in a java virtual machine |
US6637025B1 (en) * | 1998-12-03 | 2003-10-21 | International Business Machines Corporation | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file |
US6332216B1 (en) * | 1999-03-09 | 2001-12-18 | Hewlett-Packard Company | Hybrid just-in-time compiler that consumes minimal resource |
US6412108B1 (en) * | 1999-05-06 | 2002-06-25 | International Business Machines Corporation | Method and apparatus for speeding up java methods prior to a first execution |
US6408382B1 (en) * | 1999-10-21 | 2002-06-18 | Bops, Inc. | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture |
JP2001282552A (ja) * | 2000-03-28 | 2001-10-12 | Sony Corp | 情報処理装置および方法、並びにプログラム格納媒体 |
US7451389B2 (en) * | 2000-06-06 | 2008-11-11 | Microsoft Corporation | Method and system for semantically labeling data and providing actions based on semantically labeled data |
US7124407B1 (en) * | 2000-08-16 | 2006-10-17 | Sun Microsystems, Inc. | Method and apparatus for caching native code in a virtual machine interpreter |
US6883165B1 (en) * | 2000-09-28 | 2005-04-19 | International Business Machines Corporation | Apparatus and method for avoiding deadlocks in a multithreaded environment |
US7154621B2 (en) * | 2001-03-20 | 2006-12-26 | Lightsurf Technologies, Inc. | Internet delivery of digitized photographs |
US7350200B2 (en) * | 2001-03-29 | 2008-03-25 | Intel Corporation | Method and system of controlling dynamically compiled native code size |
JP2002318696A (ja) * | 2001-04-23 | 2002-10-31 | Mitsubishi Electric Corp | プログラム実行装置および方法 |
GB0125176D0 (en) * | 2001-10-19 | 2001-12-12 | Koninkl Philips Electronics Nv | A method of compiling bytecode to native code |
US6993755B1 (en) * | 2001-10-24 | 2006-01-31 | Sun Microsystems, Inc. | Dynamic compilation control |
US6996814B2 (en) * | 2001-11-14 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for dynamically compiling byte codes into native code |
AUPR947701A0 (en) * | 2001-12-14 | 2002-01-24 | Activesky, Inc. | Digital multimedia publishing system for wireless devices |
EP1376322A1 (de) * | 2002-06-27 | 2004-01-02 | Alcatel | Verfahren und multimodale Benutzer-Schnittstelle zum Verarbeiten von Benutzereingaben |
US7097099B2 (en) * | 2002-07-29 | 2006-08-29 | The Code Corporation | Data collection device with integrated data translation |
US7484200B2 (en) * | 2002-08-14 | 2009-01-27 | National Instruments Corporation | Automatically analyzing and modifying a graphical program |
GB0220282D0 (en) * | 2002-08-31 | 2002-10-09 | Ibm | Improved just in time compilation of java software methods |
US7150012B2 (en) * | 2002-10-15 | 2006-12-12 | Nokia Corporation | Method and apparatus for accelerating program execution in platform-independent virtual machines |
AU2002363920A1 (en) * | 2002-10-29 | 2004-05-25 | Freescale Semiconductor, Inc. | Method and apparatus for selectively optimizing interpreted language code |
JP4487479B2 (ja) * | 2002-11-12 | 2010-06-23 | 日本電気株式会社 | Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム |
JP3924256B2 (ja) * | 2003-03-12 | 2007-06-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイラプログラム、記録媒体、コンパイル方法、実行時情報生成装置、及び実行時情報生成プログラム |
US7290254B2 (en) * | 2003-03-25 | 2007-10-30 | Intel Corporation | Combining compilation and instruction set translation |
US7174545B2 (en) * | 2003-04-08 | 2007-02-06 | The Boeing Company | Apparatus and method for producing display application software for embedded systems |
JP4713820B2 (ja) * | 2003-05-28 | 2011-06-29 | パナソニック株式会社 | プログラム実行制御装置、プログラム実行制御方法 |
US20050091690A1 (en) * | 2003-09-12 | 2005-04-28 | Alain Delpuch | Method and system for controlling recording and playback of interactive applications |
US7640232B2 (en) * | 2003-10-14 | 2009-12-29 | Aol Llc | Search enhancement system with information from a selected source |
US7516459B2 (en) * | 2004-02-20 | 2009-04-07 | Intel Corporation | Methods and apparatus to optimize managed application program interfaces |
JP2006039879A (ja) * | 2004-07-26 | 2006-02-09 | Aplix Corp | クラスファイル実行方法およびJava(R)実行環境プログラム |
US7370318B1 (en) * | 2004-09-02 | 2008-05-06 | Borland Software Corporation | System and methodology for asynchronous code refactoring with symbol injection |
US7568190B2 (en) * | 2005-03-08 | 2009-07-28 | International Business Machines Corporation | Late binding of optimization information for just in time compilation |
US20060229813A1 (en) * | 2005-03-30 | 2006-10-12 | Tobiska William K | Ionospheric forecast system (IFS) |
US7450131B2 (en) * | 2005-09-30 | 2008-11-11 | Intel Corporation | Memory layout for re-ordering instructions using pointers |
US7954094B2 (en) * | 2006-03-27 | 2011-05-31 | International Business Machines Corporation | Method for improving performance of executable code |
-
2006
- 2006-03-30 US US11/395,985 patent/US7784041B2/en active Active
-
2007
- 2007-03-22 EP EP07251226.2A patent/EP1840740B1/en active Active
- 2007-03-29 CN CN200710089544XA patent/CN101046754B/zh active Active
- 2007-03-29 JP JP2007086623A patent/JP5324050B2/ja active Active
- 2007-03-29 CN CN201110299574.XA patent/CN102567067B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
CN1613058A (zh) * | 2001-11-07 | 2005-05-04 | 富士通株式会社 | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 |
CN1504881A (zh) * | 2002-12-02 | 2004-06-16 | 三星电子株式会社 | 爪哇执行设备和爪哇执行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101046754A (zh) | 2007-10-03 |
US7784041B2 (en) | 2010-08-24 |
EP1840740A3 (en) | 2009-03-04 |
JP2007272893A (ja) | 2007-10-18 |
EP1840740B1 (en) | 2018-05-30 |
EP1840740A2 (en) | 2007-10-03 |
CN101046754B (zh) | 2012-05-30 |
JP5324050B2 (ja) | 2013-10-23 |
CN102567067B (zh) | 2015-01-14 |
US20070234317A1 (en) | 2007-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101046754B (zh) | 在动态输出中减少由动态编译所引起的可察觉暂停的机制 | |
CN102402458B (zh) | 具有非对称处理器核的系统上的虚拟机和/或多级调度支持 | |
CN103809857B (zh) | 一种信息处理方法及电子设备 | |
US10445220B2 (en) | System and methods for application activity capture, error identification, and error correction | |
JP5496683B2 (ja) | カスタマイズ方法及びコンピュータシステム | |
CN104246659A (zh) | 可实例化的手势对象 | |
CN102866903A (zh) | 将后台工作和前台工作解耦合 | |
US6604150B1 (en) | Integration of GUI application with external application extensions | |
US11327816B2 (en) | Monitoring components in a service framework | |
US20100125624A1 (en) | Coupling state aware systems | |
WO2016156972A1 (en) | Mobile computing device advertisement positioning and dynamic repositioning | |
CN105786356B (zh) | 一种应用的操作方法及装置 | |
CN109716735A (zh) | 用于在于一个或多个应用平台上执行的隔离的应用之间共享应用数据的系统和方法 | |
US6366297B1 (en) | System and method for displaying modem information on a graphical user interface display | |
CN106027631A (zh) | 一种数据传输方法及装置 | |
US5630141A (en) | Hierarchical apparatus and method for processing device interrupts in a computer system | |
CN105554090B (zh) | 指引处理方法、系统及游戏系统 | |
CN104731600A (zh) | 一种将安卓系统服务插件化的实现方法 | |
CN101310256A (zh) | 异步运行时编译 | |
CN100390741C (zh) | 程序处理系统、程序处理方法以及计算机程序 | |
CN102520895B (zh) | 使用事件为中心的登记模型的打印机驱动器与应用的分离 | |
Fernandes et al. | Quality attributes for mobile applications | |
CN110362314B (zh) | 信息处理方法及装置、计算机可读介质、电子设备 | |
KR20010030849A (ko) | 분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법 | |
CN109101502B (zh) | 一种页面的流量配置方法、切换方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |