优化软件的方法和设备技术

技术编号:12147473 阅读:65 留言:0更新日期:2015-10-03 03:40
提供了一种优化软件的方法和设备。所述软件包括多个模块,所述多个模块包括至少一个可控模块,所述方法包括:确定所述至少一个可控模块定义的共享符号,所述共享符号是被所述软件的两个或更多模块使用的符号;生成指示所述至少一个可控模块定义的共享符号的符号使用文件;以及基于所述符号使用文件重新构建该软件,使得重新构建后的软件的可控模块中的符号表仅包含所述符号使用文件中指示的共享符号。利用所述方法和设备,可以准确有效地减少符号表中的符号数量,从而减少加载该符号表所需的时间,提高软件的运行效率。

【技术实现步骤摘要】

本专利技术涉及软件的优化,并且具体涉及一种优化软件的方法和设备
技术介绍
软件可W包括若干模块,例如可执行文件W及该可执行文件需要调用的库。每个 模块可W包含大量符号,例如函数和/或变量等,该些符号可W包括由该模块自己定义并 且仅由该模块使用的符号(在下文中,可称为内部符号)、由该模块自己定义并且由两个或 更多模块使用的符号W及由其他模块定义并且由两个或更多模块使用的符号(在下文中, 可W将后两种符号称为共享符号)。通常,在每个模块中建立符号表W存储该模块中的所有 符号W及与该符号相关的信息,例如该符号的类型、用于定位该符号的、该符号的绝对地址 和偏移量等。当运行该模块时,可W加载所述符号表,并且根据符号表中的符号W及相关信 息来执行对应的操作。 随着软件变得越来越大,符号表中的符号W及相关信息也越来越多,使得符号表 越来越大,该导致在软件运行时加载和解析符号表耗费的时间增多,从而降低了软件的运 行效率。传统上,可W使用两种方法来解决该一问题。在第一种传统方法中,软件的开发者 人工地分析软件的各个模块的源文件W找出软件中的所有共享符号,并且编写导出文件, 在该导出文件中将所述共享符号标记为"导出",然后将该导出文件提供给链接器,链接器 根据该导出文件来在模块的符号表中隐藏内部符号。然而,由于软件的源文件往往非常大, 因此人工找出所有共享符号的操作非常困难和耗时,并且容易遗漏,而且,在例如基于C++ 语言的软件中,符号的名称等在编译和链接期间会发生变化,使得该种方法难W实现。在第 二种传统方法中,软件的开发者修改每个模块的源文件,W便给该模块中的符号增加指示 该符号是否应该被隐藏的可见性标签,然后链接器根据符号的可见性标签来确定是否在符 号表中隐藏该符号。该种方法需要修改源文件,因而会引入额外的风险,而且,当更新软件 时,需要相应地更新每个符号的标签,因而比较麻烦。
技术实现思路
为了解决上述问题,本专利技术的一个目的是提供一种优化软件的方法和设备,其能 够准确有效地减少符号表的大小,从而减少加载该符号表所需的时间,提高软件的运行效 率。 根据本专利技术的一个方面,提供了一种优化软件的方法,所述软件包括多个模块,所 述多个模块包括至少一个可控模块,所述方法包括:确定所述至少一个可控模块定义的共 享符号,所述共享符号是被所述软件的两个或更多模块使用的符号;生成指示所述至少一 个可控模块定义的共享符号的符号使用文件;W及基于所述符号使用文件重新构建该软 件,使得重新构建后的软件的可控模块中的符号表仅包含所述符号使用文件中指示的共享 符号。 根据本专利技术的另一方面,提供了一种优化软件的设备,所述软件包括多个模块,所 述多个模块包括至少一个可控模块,所述设备包括:确定装置,被配置为确定所述至少一个 可控模块定义的共享符号,所述共享符号是被所述软件的两个或更多模块使用的符号;生 成装置,被配置为生成指示所述至少一个可控模块定义的共享符号的符号使用文件;W及 构建装置,被配置为基于所述符号使用文件重新构建该软件,使得重新构建后的软件的可 控模块中的符号表仅包含所述符号使用文件中指示的共享符号。 利用根据本专利技术上述方面的方法和设备,可W自动地分析软件的可控模块中的各 个符号的使用状态,并且基于分析结果来重新构建该软件,使得重新构建后的软件的可控 模块中的符号表仅包含被该软件的多个模块共享的共享符号。该样,可W准确且有效地减 少符号表中的符号数量,缩短软件运行时加载和解析该符号表所耗费的时间,提高软件的 运行效率。【附图说明】 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述W及其 它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。 图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框 图。 图2示意性地示出了包括多个模块的软件的架构。 图3示出了根据本专利技术实施例的优化软件的方法的流程图。 图4示意性地示出了对一个可控模块生成模块符号使用文件的过程。 图5示出了根据本专利技术实施例的优化软件的设备的框图。 图6示出了图5所示的构建装置的结构框图。【具体实施方式】 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可W W各种形式实现本公开而不应被该里阐述的实施方 式所限制。相反,提供该些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。 图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框 图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本专利技术实施例的功能和使 用范围带来任何限制。 如图1所示,计算机系统/服务器12 W通用计算设备的形式表现。计算机系统 /服务器12的组件可W包括但不限于;一个或者多个处理器或者处理单元16,系统存储器 28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器, 外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举 例来说,该些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线W及外围组件互连(PCI)总线。 计算机系统/服务器12典型地包括多种计算机系统可读介质。该些介质可W是 任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动 的和不可移动的介质。 系统存储器28可W包括易失性存储器形式的计算机系统可读介质,例如随机存 取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可W进一步包括其 它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34 可W用于读写不可移动的、非易失性磁介质(图1未显示,通常称为"硬盘驱动器")。尽管图 1中未示出,可W提供用于对可移动非易失性磁盘(例如"软盘")读写的磁盘驱动器,W及对 可移动非易失性光盘(例如CD-ROM, DVD-ROM或者其它光介质)读写的光盘驱动器。在该些 情况下,每个驱动器可W通过一个或者多个数据介质接口与总线18相连。存储器28可W 包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,该些程序模块被 配置W执行本专利技术各实施例的功能。 具有一组(至少一个)程序模块42的程序/实用工具40,可W存储在例如存储器 28中,该样的程序模块42包括一但不限于一操作系统、一个或者多个软件、其它程序 模块W及程序数据,该些示例中的每一个或某种组合中可能包括网络环境的实现。程序模 块42通常执行本专利技术所描述的实施例中的功能和/或方法。 计算机系统/服务器12也可W与一个或多个外部设备14 (例如键盘、指向设备、 显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设 备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的 任何设备(例如网卡,调制解调器等等)通信。该种通信可W通过输入/输出本文档来自技高网
...
优化软件的方法和设备

【技术保护点】
一种优化软件的方法,所述软件包括多个模块,所述多个模块包括至少一个可控模块,所述方法包括:确定所述至少一个可控模块定义的共享符号,所述共享符号是被所述软件的两个或更多模块使用的符号;生成指示所述至少一个可控模块定义的共享符号的符号使用文件;以及基于所述符号使用文件重新构建该软件,使得重新构建后的软件的可控模块中的符号表仅包含所述符号使用文件中指示的共享符号。

【技术特征摘要】

【专利技术属性】
技术研发人员:郭久福张嗣元纪金松班怀芸
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1