CN103853811A - 用于在网络化计算环境中替换注释的程序代码的方法和系统 - Google Patents

用于在网络化计算环境中替换注释的程序代码的方法和系统 Download PDF

Info

Publication number
CN103853811A
CN103853811A CN201310627223.6A CN201310627223A CN103853811A CN 103853811 A CN103853811 A CN 103853811A CN 201310627223 A CN201310627223 A CN 201310627223A CN 103853811 A CN103853811 A CN 103853811A
Authority
CN
China
Prior art keywords
program
annotation
alternative method
code file
program code
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
Application number
CN201310627223.6A
Other languages
English (en)
Other versions
CN103853811B (zh
Inventor
S·百拉萨布拉曼尼恩
R·A·哈密尔顿二世
B·M·奥康内尔
K·R·沃克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qindarui Co.
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103853811A publication Critical patent/CN103853811A/zh
Application granted granted Critical
Publication of CN103853811B publication Critical patent/CN103853811B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors

Abstract

本公开涉及用于在网络化计算环境中替换注释的程序代码的方法和系统。提供用于在执行期间将一个程序代码库(或其方法)替换为另一个程序代码库(或其方法)的方法。特别地,程序代码文件内的注释(例如,包括运行时优化请求及关联的性能/测量准则)将被检测,被分析并用来监测/评价程序代码文件的运行的方法集合等(例如,初始/原始方法的集合)的性能。正因出现这种情况,替代方法的集合将被从程序代码库中识别出(例如,基于与原始方法的集合的相似性)并同样地被监测/被评价。基于监测的性能,一种或多种可替换的方法可替代程序代码文件中的原始方法。这样的能力允许方法在运行期间被评价,并对于性能将通过使用最高性能的方法来优化。

Description

用于在网络化计算环境中替换注释的程序代码的方法和系统
技术领域
本发明的实施例涉及程序代码库搜索和选择。特别地,本发明的实施例涉及用于在网络化计算环境(例如,云计算环境)中的基于集成开发环境(IDE)的程序代码库搜索和选择的方案。
背景技术
代码存储库典型为用户可以访问以浏览、搜索和下载源代码或编译的库代码的可搜索的、分类的和/或可互联网访问的位置。代码存储库的使用可以包括开源项目、专有开发项目和/或创建库以便以后使用的项目。代码注释是能够给源代码添加的语法元数据的一种特殊形式。类、方法、变量、参数和/或代码包可以被注释。与评论不同,注释可以是可操作的,因为它们可以被嵌入由编译器生成的文件中,并且可以由执行环境使用以便可实时检索。代码库是用来开发软件的资源的合集。这样的资源可以包括预先编写的代码和例程、类、值或类型规范。代码库可以含有为独立的程序提供服务的程序代码和/或数据。这样的实现方式允许程序代码和/或数据按模块的方式来共享及修改。微基准可以不精确预期实际工作性能,因为对各种库调用的输入可以是用户驱动的且不同于在开发期间所预期的。但是,挑战可能存在于:现有的方法不会自动地将一个程序代码库替换为另一个程序代码库。即,现有的方案典型地依赖于手动的和/或完全不同的搜索操作。这样的方案会是低效的和/或较不精确的。
发明内容
本发明的实施例提供一种用于在程序执行期间基于注释及关联的性能特性/准则将一个程序代码库(或其方法)替换为另一个程序代码库(或其方法)的方案。特别地,在程序代码文件内的注释(例如,包括运行时优化请求及关联的性能/测量准则)将被检测,被分析并被用来监测/评价程序代码文件的运行的方法集合等(例如,初始/原始方法的集合)的性能。正因出现这种情况,所以替代方法的集合将被从程序代码库中识别出(例如,基于与原始方法的集合的相似性)并且同样地被监测/评价。基于所监测的性能,一种或多种可替换的方法可以替代在程序代码文件中的一种或多种原始的方法。这样的能力允许方法在运行期间被评价,并且对于性能将通过使用最高性能的方法来优化。
本发明的第一方面提供一种用于在网络化计算环境中替换注释的程序代码的计算机实现的方法,包括:检测在程序代码文件中的注释,注释包括具有用于运行程序代码文件的准则集的运行时优化请求;响应于检测而基于准则集在运行期间监测在程序代码文件中的至少一种方法;识别用于该至少一种方法的至少一种替代方法,该至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;基于准则集来监测该至少一种替代方法;并且基于对该至少一种替代方法的监测而从该至少一种替代方法中选出特定的替代方法以用于程序代码文件中。
本发明的第二方面提供一种用于在网络化计算环境中替换注释的程序代码的系统,包括:包含指令的存储介质;与存储介质耦接的总线;以及与总线耦接的处理器,该处理器在执行指令时促使系统:检测在程序代码文件中的注释,该注释包括具有用于运行程序代码文件的准则集的运行时优化请求;响应于检测而基于准则集在运行期间监测在程序代码文件中的至少一种方法;识别用于该至少一种方法的至少一种替代方法,该至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;基于准则集而监测该至少一种替代方法;并且基于对该至少一种替代方法的监测而从该至少一种替代方法中选出特定的替代方法以用于程序代码文件中。
本发明的第三方面提供一种用于在网络化计算环境中替换注释的程序代码的计算机程序产品,该计算机程序产品包括计算机可读存储介质,以及存储于计算机可读存储介质上的程序指令,用于:检测在程序代码文件中的注释,该注释包括具有用于运行程序代码文件的准则集的运行时优化请求;响应于检测而基于准则集在运行期间监测在程序代码文件中的至少一种方法;识别用于该至少一种方法的至少一种替代方法,该至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;基于准则集而监测该至少一种替代方法;并且基于对该至少一种替代方法的监测而从该至少一种替代方法中选出特定的替代方法以用于程序代码文件中。
根据本发明的第四方面提供一种用于部署用于在网络化计算环境中替换注释的程序代码的系统的方法,包括:提供计算机基础设施,该计算机基础设施可操作用于:检测在程序代码文件中的注释,该注释包括具有用于运行程序代码文件的准则集的运行时优化请求;响应于检测而基于准则集在运行期间监测在程序代码文件中的至少一种方法;识别用于该至少一种方法的至少一种替代方法,该至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;基于准则集而监测该至少一种替代方法;并且基于对该至少一种替代方法的监测而从该至少一种替代方法中选出特定的替代方法以用于程序代码文件中。
附图说明
本发明的这些及其他特征根据下面结合附图进行的关于本发明的各个方面的详细描述将变得更容易理解,在附图中:
图1示出了根据本发明的一种实施例的计算节点。
图2示出了根据本发明的一种实施例的一种系统的示意图。
图3示出了根据本发明的一种实施例的图2的系统的更详细的示意图。
图4示出了根据本发明的一种实施例的一种方法的流程图。
图5示出了根据本发明的一种实施例的另一种方法的流程图。
附图并不一定是按比例的。附图只是示意性的表示,并非是要描述本发明的具体参数。附图意在只描绘本发明的典型实施例,并且因此不应被认为是对本发明的范围的限定。在附图中,相似的编号表示相似的元件。
具体实施方式
说明性的实施例现在将参照附图在下文更全面地描述,在附图中示出了示例性的实施例。但是,本公开内容可以按照许多不同的形式来实施,而不应被理解为仅限于本文所阐明的示例性实施例。相反地,这些示例性的实施例被提供使得本公开内容将是全面和完整的并将给本领域技术人员完全传达本公开内容的范围。在该描述中,关于众所周知的特征和技术的细节可以被省略以避免使得本发明的实施例不必要地变得不明确。
本文所使用的术语仅为了描述特定的实施例,而并非旨在限定本公开内容。如同本文所使用的,单数形式“一”、“一个”和“该”意指同样包括复数形式,除非上下文另有明确说明。而且,术语“一”、“一个”等的使用并非表示对数量的限定,而是表示存在至少一个所引用的项。词“集合”旨在意指至少一个的数量。还应当理解,术语“包括”和/或“包含”或者“含有”和/或“拥有”,在用于本说明书时,指定存在所声明的特征、区域、整数、步骤、操作、元件和/或构件,但并不排除存在或添加一个或多个其他特征、区域、整数、步骤、操作、元件、构件和/或它们的群组。
如同前面所指出的,本发明的实施例提供一种用于在程序/库执行期间基于注释及关联的性能特性/准则而将一个程序代码库(或其方法)替换为另一个程序代码库(或其方法)的方法。特别地,在程序代码文件内的注释(例如,包括运行时优化请求及关联的性能/测量准则)将被检测,被分析并被用来监测/评价程序代码文件的运行的方法集合等(例如,初始/原始方法的集合)的性能。正因出现这种情况,所以替代方法的集合将被从程序代码库中识别出(例如,基于与原始方法的集合的相似性)并且同样地被监测/被评价。基于所监测的性能,一种或多种可替换的方法可以替代在程序代码文件中的一种或多种原始的方法。这样的能力允许方法在运行期间被评价,并且对于性能将通过使用最高性能的方法来优化。
现在参照图1,图中示出了计算节点的实例的示意图。计算节点10只是合适的计算节点的一个实例,而并非意指暗示对本文所描述的本发明的实施例的用途或功能的范围的任何限定。无论如何,计算节点10能够被实现和/或执行以上所阐明的任何功能。
在计算节点10中,存在可与众多其他通用或专用计算系统环境或配置一起工作的计算机系统/服务器12。可以适合于与计算机系统/服务器12一起使用的熟知的计算系统、环境和/或配置的实例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、移动设备、全球定位系统(GPS)、启用GPS的设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子产品、网络PC、小型计算机系统、大型计算机系统,以及包括任何上述系统或设备的分布式计算环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(例如,程序模块)的一般背景下描述。一般地,程序模块可以包括用于执行特定的任务或者实现特定的抽象数据类型的例程、程序、对象、构件、逻辑、数据结构等。计算机系统/服务器12可以在分布式计算环境中实施,在分布式计算环境中任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地及远程计算机系统存储介质两者中。
如图1所示,在计算节点10中的计算机系统/服务器12以通用计算设备的形式来示出。计算机系统/服务器12的构件可以包括但不限于:一个或多个处理器或处理单元16、系统存储器28,以及用于将包括系统存储器28在内的各种系统构件耦接至处理器16的总线18。
总线18表示任意若干类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用多种总线架构中的任一种的处理器或局域总线。举例来说,但不作限定,这样的架构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这样的介质可以可由计算机系统/服务器12访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28能够包括形式为非易失性存储器的计算机系统可读介质,例如,随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移动的/不可移动的、易失性的/非易失性的计算机系统存储介质。仅举例来说,存储系统34能够被提供用于读取和写入不可移动的非易失性磁介质(未示出,且通常称为“硬盘”)。尽管未示出,但是也能够提供用于读取和写入可移动的非易失性磁盘(例如,“软盘”)的磁盘驱动器以及用于读取或写入可移动的非易失性光盘(例如,CD-ROM、DVD-ROM或其他光介质)的光盘驱动器。在这种情况下,每个驱动器都能够通过一个或多个数据介质接口连接至总线18。如同以下将进一步示出和描述的,存储器28可以包括具有被配置用于执行本发明的实施例的功能的一组(例如,至少一个)程序模块集合的至少一个程序产品。
本发明的实施例可以被实现为计算机可读信号介质,该计算机可读信号介质可以包括具有实现于其内(例如,在基带中或者作为载波的一部分)的计算机可读程序代码的传播的数据信号。这样的传播信号可以采用任意多种形式,包括但不限于,电磁的、光的或者它们的任何合适的组合。计算机可读信号介质可以是不为计算机可读存储介质的且能够通信、传播或输送由指令执行系统、装置或设备使用的或者与其结合起来使用的程序的任何计算机可读介质。
实现于计算机可读介质上的程序代码可以使用任何适当的介质来发送,包括但不限于,无线电、导线、光纤、射频(RF)等,或者上述项的任何合适的组合。
具有一组(至少一个)程序模块42的所注释的程序代码替换程序/工具40可以存储于存储器28内,举例来说,但不作限定,还有操作系统、一个或多个应用程序、其他程序模块和程序数据。一般地,所注释的程序代码替换40执行本文所描述的本发明的功能。操作系统、一个或多个应用程序、其他程序模块和程序数据或者它们的某种组合每个都可以包括网络环境的实现方式。程序模块42一般地执行本文所描述的本发明的实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如,键盘、指点装置、显示器24等);用于允许用户与计算机系统/服务器12交互的一个或多个设备;和/或用于允许计算机系统/服务器12与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)通信。这样的通信能够经由I/O接口22来进行。此外,计算机系统/服务器12能够经由网络适配器20与一个或多个网络通信,例如,局域网(LAN)、广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其他构件通信。应当理解,尽管未示出,但是其他硬件和/或软件构件能够结合计算机系统/服务器12来使用。实例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
现在参照图2,图中示出了用于描述根据本发明的一种实施例的在此所讨论的功能的系统示意图。应当理解,本文所叙述的教导可以在任何类型的网络化计算环境(例如,云计算环境)中实施。在图2中示出了能够被实现为独立式计算机系统或者网络化计算机系统的计算机系统/服务器12。在本文所叙述的教导于网络化计算环境(例如,云计算环境)中实施的情况下,每个客户端都不需要具有程序代码库搜索和选择引擎(引擎50)。相反地,引擎50能够位于用于与客户端通信(例如,无线通信)以提供下文中的库搜索和选择功能的服务器(例如,支付处理服务器)或具备服务器能力的设备上。无论如何,如图所示,引擎50被示为在计算机系统/服务器12内。一般地,引擎50能够被实现为在图1的计算机系统12上的程序/工具40,并且能够启用本文所叙述的功能。如同进一步示出的,引擎50(在一种实施例中)包括用于处理一组(至少一个)规则/逻辑52和/或提供以下所叙述的库搜索和选择功能的规则和/或计算引擎。
按照这些方法,引擎50可以执行与通用计算机类似的多种功能。特别地,除了其他功能外,引擎50可以(除了别的以外):检测在程序代码文件54中的(例如,运行时)注释56(例如,由运行时环境60产生),该注释包括具有用于运行程序代码文件的准则集的运行时优化请求;在集成开发环境(IDE)62中分析注释56;响应于检测而在运行期间基于准则集来监测在程序代码文件54中的至少一种方法58A-N;识别出用于该至少一种方法58A-N的至少一种替代方法68A-N(例如,该至少一种替代方法68A-N被从存储于计算机存储设备64内的程序代码库66中识别出);基于准则集来监测该至少一种替代方法68A-N;基于对该至少一种替代方法的监测而从该至少一种替代方法68A-N中选出特定的替代方法70以用于程序代码文件54中(例如,作为原始方法58A-N中的一种或多种方法的替换);在程序代码文件中以特定的替代方法70来替换该至少一种方法58A-N;将监测操作的结果存储于存储库72内。
应当理解,图2所示的实例意指仅为说明性的。例如,引擎50能够被装载到运行时环境60、IDE62中,或者如同所示出的那样在与运行时环境60和IDE62结合起来工作的单独系统12上操作。无论如何,应当理解,图2所示的具体架构实现方式并非意指为限制性的,并且相似的基础功能可以用可替换的架构来实现。例如,无论具体的架构是什么,具有注释的程序代码文件都将被接收并被分析。基于与文件关联的优化请求以及性能/测量准则集合,方法集58A-N的性能将被监测,并且较高性能的方法集68A-N因此可以将其替代。
现在参照图3,图中示出了程序40(图1)和/或引擎50(图2)的更详细的示意图。特别地,图3示出了经由IDE100、代码存储库200和运行时(runtime)300实现的程序40/引擎50。在一种实施例中,构件100、200和300可以经由一个或多个通信网络来连接,例如,云计算网络。在IDE100内,注释处理器110可以被配置用于处理“@SameAs”和/或“@Substitute”注释。注释处理器110对于所有搜索都使用基于预期的搜索引擎310。在运行时300内的是基于预期的搜索引擎310、结果存储320、库替换处理器330以及代码存储库和构建服务340。基于预期的搜索引擎310可以执行在代码存储库200上搜索库。库替换处理器330可以识别出替换/可替换的库(例如,经由搜索和/或构建)以用可替换的库来替换运行时的库,从而针对应用的实际/现实条件来选择具有最优性能的库。按照这些方法,库替换处理器330可以与代码存储库和构件服务340及注释处理器110交互。由库替换处理器330得出的结果然后可以被存储于结果存储320内。代码存储库200是由基于预期的搜索引擎310用来执行基于预期的搜索的说明性存储库。
说明性实施例
这部分将描述根据后面的说明性实例的由引擎50执行的各种功能(例如,经由方法、功能和/或模块)。
注释处理
注释解析:按照这种方法,用户可以(例如)搜索用于执行对字符串的base64编码的库。对于它们的应用,用户可能希望从库调用中返回的仍然是字符串。为了初始化搜索,用户则可以将下列内容在其希望进行库调用的地方输入代码中:
@Description(base64,encode)
@Expect(″hello″).Returns(“aGVsbG8=”)
@Signature(″public String<method>String″)
上述指令集请求IDE来调用对含有术语base64和decode的方法进行存储库搜索。为了匹配方法,IDE然后可以缩窄公开的、返回字符串对象的和预期单个字符串对象作为参数的方法。而且,如果给该方法传递字符串“hello”,则该方法的返回值应当为字符串“aGVsbG8=”。然后可以给用户呈现匹配方法的列表以及那些方法所属的库。
为了允许运行时的库替换,可以使用具有可选参量的下列注释:
@RuntimeOptimize(″@Time%>.1″)
这指示运行时环境何时装载类以监测在该方法调用中耗费了时间的百分比数。如果时间百分比超过.1%,则运行时环境应当搜索更优的库。
用户定义的库选择
在该方案的另一方面,可以添加用于允许用户提供有序库的列表以从其中选择的附加注释。所提议的注释可以称为LibraryOrder并且可以具有下列写法:
@LibraryOrder(″XYZCollections,ABCCollections,Java.util″)
这指示运行时环境首先收集库,测量其性能,然后使用Jakarta合集来测量其性能,等等。
结果存储
在该方案的另一方面,如果库调用针对潜在的优化来标记,则运行时环境可以开始存储方法调用参数的子集以及所产生的返回。该调用参数和结果存储可以用来使对相关搜索方法的输入自动化。通过使用范围广泛的“现实世界”参数和结果,程序代码库在不损失功能的情况下可以被相对确定地替换。在增量构建连同由版本控制系统进行的自动化代码部署一起被实现的另一种实施例中,运行时环境可以用在结果存储中所采集的数据来扩充用户定义的注释用于基于预期的搜索。今后的搜索然后可以利用调用参数以及来自存储的所产生的结果。
库搜索
在该方案的另一方面,可以实现各种搜索方法以搜索与所提供的注释匹配的库。没有由其他注释明确排除的匹配库被认为是用于替换的。该构件可以在运行时不活动的延长时间内周期性地调用以便不影响应用性能。在搜索执行之后,匹配的库被下载并针对库替换和执行时序进行计划库替换和执行时序。
库替换
该方法可以用可替换的程序代码库(或方法)来替换运行时程序代码库(或方法)以针对应用的条件选择最快的程序代码库(或方法)。替换操作需要下载用于检测的下一个程序代码库,修改装载该库的执行路径并且将所产生的执行定时于一个时间段内。在穷举了所有匹配的程序代码库之后,具有最佳性能特性的程序代码库将被选择并用于所有后续的调用。可以直接对二进制码(binary)进行改变以使用新的程序代码库,使得应用的后续重装载将同样使用新的二进制码。
在自动化部署与版本控制系统连接的实施例中,运行时环境可以在开发分支中直接替换库。在可替换的实施例中,运行时环境可以标记开发分支用于所提议的替换。IDE然后可以将提议呈现给开发者。如果开发者同意该提议则会发生替换。
现在参照图4,图中示出了根据本发明的一种实施例的一种方法的流程图。过程开始于步骤P1。在步骤P2中,确定优化注释是否存在于所接收的程序代码文件内。若否,则过程会进行到步骤P5。若是,则注释可以在步骤P3中被添加到部署描述符的运行时环境替换列表中。在步骤P4中,确定是否还有更多代码要处理。若是,则过程返回到步骤P2。若否,则运行时环境检测代码执行并在步骤P5中将结果记录于结果存储内。在步骤P6中,确定替换列表是否为空。若是,则过程可以结束于步骤P14。若否,则运行时环境在步骤P7中从替换列表内提取注释,并且在步骤P8中确定是否满足在注释中指定的条件(例如,@RuntimeOptimize请求)。若否,则过程会进行到步骤P13。若是,则将在步骤P9中执行对满足条件的可应用方法的搜索。然后,在步骤P10中,将确定是否已经找到了匹配项。若否,则过程进行到步骤P13。若是,则现有的实现方式将以每个匹配项来替换,并且性能特性为此将在步骤P11中被搜集/收集。在步骤P12中,最佳性能的库/方法将被选择并用于所部属的程序代码文件中。在步骤P13中,替换库可以被发送回到源控制目的地(source control destination)和/或在过程结束于步骤P14之前被存储。
现在参照图5,图中示出了根据本发明的一种实施例的另一种方法的流程图(例如,由图2的引擎50所启用的)。如图所示,在步骤S1中,注释在程序代码文件中被检测。如同前面所指出的,注释包括具有用于运行程序代码文件的准则集的运行时优化请求。在步骤S2中,在程序代码文件中的至少一种方法在运行期间基于准则集来监测。在步骤S3中,识别出用于该至少一种方法的至少一种替代方法。该至少一种替代方法通常被从存储于计算机存储设备内的程序代码库中识别出。在步骤S4中,该至少一种替代方法基于准则集来监测。在步骤S5中,从该至少一种替代方法中选出特定的替代方法以用于程序代码文件中(例如,作为程序代码文件的原始方法中的一种或多种可替换方法)。
虽然在此被示为及被描述为所注释的程序代码替换的解决方案,但是应当理解,本发明还提供各种可替换的实施例。例如,在一种实施例中,本发明提供包含用于允许计算机基础设施提供本文所讨论的所注释的程序代码替换的计算机程序代码的计算机可读/可用介质。从这个意义上说,计算机可读/可用介质包含用于实现本发明的各种过程中的每一种过程的程序代码。应当理解,术语计算机可读介质或计算机可用介质包含任何类型的程序代码的物理实施例中的一种或多种。特别地,计算机可读/可用介质能够包含实现于一种或多种便携式存储制品(例如,光盘、磁盘、磁带等)上的,于计算设备的一个或多个数据存储部分(例如,存储器28(图1)和/或存储系统34(图1)(例如,固定盘、只读存储器、随机存取存储器、高速缓存存储器等))上的程序代码。
在另一种实施例中,本发明提供一种用于执行本发明的基于订购、广告和/或付费的过程的方法。即,服务提供者(例如,解决方案集成商)能够许诺提供(offer to provide)所注释的程序代码替换功能。在本例中,服务提供者能够创建用于为一个或多个用户执行本发明的过程的计算机体系结构(例如,计算机系统12(图1)),并对其进行维护、支持等。进而,服务提供者能够接收用户按照订购和/或付费协议进行的支付,和/或服务提供者能够接收来自对一个或多个第三方的广告内容的销售的支付。
在又一种实施例中,本发明提供一种用于进行所注释的程序代码替换的计算机实现的方法。在本例中,能够提供一种计算机体系结构(例如,计算机系统12(图1)),并且能够获得(例如,创建,购买,使用,修改等)用于执行本发明的过程的一个或多个系统并将其部署于计算机体系结构。从这个意义上说,系统的部署能够包括下列项中的一项或多项:(1)将来自计算机可读介质的程序代码安装于计算设备(例如,计算机系统12(图1))上;(2)将一个或多个计算设备添加到计算机体系结构中;以及(3)合并和/或修改计算机基础设施的一个或多个现有系统以允许计算机基础设施执行本发明的过程。
如同本文所使用的,应当理解,术语“程序代码”和“计算机程序代码”是同义的,并且意指一组指令以任意语言、代码或符号的任意表示,其中该组指令旨在促使具有信息处理能力的系统直接地执行特别的功能或者在以下a)转换为另一种语言、代码或符号;b)以不同的材料形式的再现中的任一项或两者之后执行特别的功能。从这个意义上说,程序代码能够被实现为下列项中的一项或多项:应用/软件程序、构件软件/函数(function)库、操作系统、特定的计算设备的基础设备系统/驱动器等。
适合于存储和/或执行程序代码的数据处理系统能够在下面提供,并且能够包括通过系统总线与存储元件直接或间接通信耦接的至少一个处理器。存储元件能够包括但不限于:在程序代码的实际执行期间采用的本地存储器、大容量存储器,以及用于为至少一些程序代码提供临时存储以便减少在执行期间必须从大容量存储器中检索代码的次数的高速缓存存储器。输入/输出和/或其他外部设备(包括但不限于,键盘、显示器、指点装置等)能够直接地或者通过中介的设备控制器与系统耦接。
网络适配器还可以与系统耦接以允许数据处理系统通过中介的专用或公共网络的任意组合与其他数据处理系统、远程打印机、存储设备等耦接。说明性的网络适配器包括但不限于:调制解调器、有线调制解调器和以太网卡。
以上关于本发明的各个方面的描述已经出于说明和描述的目的而给出。并非是要作为穷尽性的或者将本发明限定于所公开的精确形式,而是很明显,许多修改和变化都是可能的。本领域技术人员可以清楚此类修改和变化意指包含于由所附权利要求书所界定的本发明的范围之内。

Claims (15)

1.一种用于在网络化计算环境中替换注释的程序代码的计算机实现的方法,包括:
检测程序代码文件中的注释,所述注释包括具有用于运行所述程序代码文件的准则集的运行时优化请求;
响应于检测而在运行期间基于所述准则集监测在所述程序代码文件中的至少一种方法;
识别出用于所述至少一种方法的至少一种替代方法,所述至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;
基于所述准则集来监测所述至少一种替代方法;以及
基于对所述至少一种替代方法的监测从所述至少一种替代方法中选出特定的替代方法以用于所述程序代码文件中。
2.根据权利要求1所述的计算机实现的方法,所述注释包括运行时注释。
3.根据权利要求2所述的计算机实现的方法,所述运行时注释由运行时环境生成。
4.根据权利要求1所述的计算机实现的方法,还包括在所述程序代码文件中以所述特定的替代方法替换所述至少一种方法。
5.根据权利要求4所述的计算机实现的方法,还包括在所述替换之后存储所述程序代码文件。
6.根据权利要求1所述的计算机实现的方法,还包括在集成开发环境(IDE)中分析所述注释。
7.根据权利要求1所述的计算机实现的方法,所述网络化计算环境包括云计算环境。
8.一种用于在网络化计算环境中替换注释的程序代码的系统,包括:
包含指令的存储介质;
与所述存储器介质耦接的总线;以及
与所述总线耦接的处理器,所述处理器在执行所述指令时促使所述系统:
检测程序代码文件中的注释,所述注释包括具有用于运行所述程序代码文件的准则集的运行时优化请求;
响应于检测而在运行期间基于所述准则集来监测在所述程序代码文件中的至少一种方法;
识别出用于所述至少一种方法的至少一种替代方法,所述至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;
基于所述准则集来监测所述至少一种替代方法;以及
基于对所述至少一种替代方法的监测从所述至少一种替代方法中选出特定的替代方法以用于所述程序代码文件中。
9.根据权利要求8所述的系统,所述注释包括运行时注释。
10.根据权利要求9所述的系统,所述运行时注释由运行时环境生成。
11.根据权利要求8所述的系统,所述存储器介质还包括用于促使所述系统以所述特定的替代方法来替换在所述程序代码文件中的所述至少一种方法的指令。
12.根据权利要求11所述的系统,所述存储器介质还包括用于促使所述系统在所述替换之后存储所述程序代码文件的指令。
13.根据权利要求8所述的系统,所述存储器介质还包括用于促使所述系统在集成开发环境(IDE)中分析所述注释的指令。
14.根据权利要求8所述的系统,所述网络化计算环境包括云计算环境。
15.一种用于在网络化计算环境中部署用于替换注释的程序代码的系统的方法,包括:
提供计算机基础设施,该计算机基础设施可操作用于:
检测程序代码文件中的注释,所述注释包括具有用于运行所述程序代码文件的准则集的运行时优化请求;
响应于检测而在运行期间基于所述准则集来监测在所述程序代码文件中的至少一种方法;
识别出用于所述至少一种方法的至少一种替代方法,所述至少一种替代方法被从存储于计算机存储设备内的程序代码库中识别出;
基于所述准则集来监测所述至少一种替代方法;以及
基于对所述至少一种替代方法的监测从所述至少一种替代方法中选出特定的替代方法以用于所述程序代码文件中。
CN201310627223.6A 2012-12-06 2013-11-29 用于在网络化计算环境中替换注释的程序代码的方法和系统 Active CN103853811B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/706,599 US9170790B2 (en) 2012-12-06 2012-12-06 Replacing annotated program code in a networked computing environment
US13/706,599 2012-12-06

Publications (2)

Publication Number Publication Date
CN103853811A true CN103853811A (zh) 2014-06-11
CN103853811B CN103853811B (zh) 2017-04-26

Family

ID=50861470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310627223.6A Active CN103853811B (zh) 2012-12-06 2013-11-29 用于在网络化计算环境中替换注释的程序代码的方法和系统

Country Status (2)

Country Link
US (2) US9170790B2 (zh)
CN (1) CN103853811B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471345B2 (en) * 2013-09-25 2016-10-18 Sap Se Runtime generation and injection of java annotations
US9606783B2 (en) * 2013-10-14 2017-03-28 International Business Machines Corporation Dynamic code selection based on data policies
US10223080B2 (en) * 2015-01-14 2019-03-05 Dynatrace Llc Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources
CN106549935A (zh) * 2016-09-27 2017-03-29 上海红阵信息科技有限公司 一种异构功能等价体生成装置及方法
US10678513B2 (en) * 2017-09-12 2020-06-09 Devfactory Fz-Llc Library upgrade method, apparatus, and system
US11822468B2 (en) 2019-05-24 2023-11-21 Microsoft Technology Licensing, Llc Executable code branch annotations for objective branch verification
US20200394329A1 (en) * 2019-06-15 2020-12-17 Cisco Technology, Inc. Automatic application data collection for potentially insightful business values
CN114546480B (zh) * 2022-04-26 2022-08-19 天津所托瑞安汽车科技有限公司 代码自动集成方法、设备和可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234553A (zh) * 1998-03-23 1999-11-10 太阳微系统有限公司 减少编译代码中动态类初始化检查的代价的技术
US20030033122A1 (en) * 2001-03-15 2003-02-13 Dempsey Derek M. Performance assessment of data classifiers
CN1518702A (zh) * 2001-05-04 2004-08-04 �Ҵ���˾ 网页注释系统
CN101398758A (zh) * 2008-10-30 2009-04-01 北京航空航天大学 一种代码抄袭的检测方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923882A (en) 1995-08-29 1999-07-13 Silicon Graphics, Inc. Cross-module optimization for dynamically-shared programs and libraries
US6202205B1 (en) 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US6460178B1 (en) 1999-06-30 2002-10-01 Microsoft Corporation Shared library optimization for heterogeneous programs
US7191436B1 (en) * 2001-03-08 2007-03-13 Microsoft Corporation Computer system utility facilitating dynamically providing program modifications for identified programs
US7243346B1 (en) 2001-05-21 2007-07-10 Microsoft Corporation Customized library management system
US6934943B2 (en) * 2001-10-18 2005-08-23 Hewlett-Packard Development Company Optimization of control transfers to dynamically loaded modules
US7672753B1 (en) 2004-07-30 2010-03-02 Symantec Operating Corporation Optimized library device management
US7657881B2 (en) 2004-12-21 2010-02-02 Intel Corporation Using optimized libraries to improve performance of deployed application code at runtime
US8572560B2 (en) * 2006-01-10 2013-10-29 International Business Machines Corporation Collaborative software development systems and methods providing automated programming assistance
US7886285B2 (en) 2006-03-14 2011-02-08 International Business Machines Corporation Combining software executable libraries
US7949992B2 (en) * 2006-06-27 2011-05-24 International Business Machines Corporation Development of information technology system
US8020146B2 (en) * 2006-07-24 2011-09-13 International Business Machines Corporation Applying deferred refactoring and API changes in an IDE
US20100023955A1 (en) 2008-07-28 2010-01-28 Marcottage Method and system and apparatus for dynamic software environment
US8122017B1 (en) * 2008-09-18 2012-02-21 Google Inc. Enhanced retrieval of source code
US8359574B1 (en) * 2009-01-16 2013-01-22 Adobe Systems Incorporated Offline mode in IDE for seamless service-oriented-architecture-based application development
US8434059B2 (en) * 2009-05-01 2013-04-30 Apple Inc. Systems, methods, and computer-readable media for fertilizing machine-executable code
US9146735B2 (en) * 2009-07-23 2015-09-29 International Business Machines Corporation Associating workflows with code sections in a document control system
US8924946B2 (en) * 2010-11-24 2014-12-30 International Business Machines Corporation Systems and methods for automatically optimizing high performance computing programming languages
US9027006B2 (en) * 2012-08-09 2015-05-05 Apple Inc. Value profiling for code optimization
US9361068B2 (en) * 2014-05-21 2016-06-07 International Business Machines Corporation System and method for using development objectives to guide implementation of source code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234553A (zh) * 1998-03-23 1999-11-10 太阳微系统有限公司 减少编译代码中动态类初始化检查的代价的技术
US20030033122A1 (en) * 2001-03-15 2003-02-13 Dempsey Derek M. Performance assessment of data classifiers
CN1518702A (zh) * 2001-05-04 2004-08-04 �Ҵ���˾ 网页注释系统
CN101398758A (zh) * 2008-10-30 2009-04-01 北京航空航天大学 一种代码抄袭的检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OTÁVIO AUGUSTO LAZZARINI LEMOS等: "A test-driven approach to code search and its application to the reuse of auxiliary functionality", 《INFORMATION AND SOFTWARE TECHNOLOGY》 *

Also Published As

Publication number Publication date
US9170790B2 (en) 2015-10-27
US9733910B2 (en) 2017-08-15
US20140165029A1 (en) 2014-06-12
CN103853811B (zh) 2017-04-26
US20150378695A1 (en) 2015-12-31

Similar Documents

Publication Publication Date Title
CN103853811A (zh) 用于在网络化计算环境中替换注释的程序代码的方法和系统
CN103853549A (zh) 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统
US9946537B2 (en) Integrated development environment-based repository searching in a networked computing environment
US20190250965A1 (en) Automatic registration of empty pointers
CN101887365B (zh) 用于构造基于组件的应用的可执行代码的方法和编译器
CN1713179B (zh) 在对象模型中的影响分析
Lampa et al. SciPipe: A workflow library for agile development of complex and dynamic bioinformatics pipelines
US8793653B2 (en) Program code library selection in an integrated development environment
CN102298607A (zh) 数据集成的方案合约
CN101416214A (zh) 用于基于延续的元运行时环境的抽象执行模型
Idowu et al. Asset management in machine learning: State-of-research and state-of-practice
CN104838374A (zh) 分散hadoop集群
CN101535969A (zh) 使用内核模式重定向来改变代码执行路径
JP2013257738A (ja) コンピューティングシステム、コンピューティングシステムの実行制御方法及び実行制御プログラム
CN102693263A (zh) 数据编程环境
CN103109293A (zh) 一种用户行为处理系统及方法
CN105160018A (zh) 一种复制/粘贴图片的方法、装置和系统
KR102472345B1 (ko) 계층화 문서를 관리하는 방법 및 이를 이용한 장치
CN101089882A (zh) 用于管理供应链的方法、系统和装置
US8875093B2 (en) Instantiating a coding competition to develop a program module in a networked computing environment
Wittek et al. Digital preservation in grids and clouds: a middleware approach
CN102812437A (zh) 高和低值应用状态
US20130091512A1 (en) Predicting the Impact of Change on Events Detected in Application Logic
López et al. Using the ModelSet dataset to support machine learning in model-driven engineering
Mateos et al. A stitch in time saves nine: Early improving code-first web services discoverability

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211202

Address after: USA New York

Patentee after: Qindarui Co.

Address before: USA New York

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right