CN112328259A - 一种编译时长的处理方法和装置 - Google Patents

一种编译时长的处理方法和装置 Download PDF

Info

Publication number
CN112328259A
CN112328259A CN202011350214.3A CN202011350214A CN112328259A CN 112328259 A CN112328259 A CN 112328259A CN 202011350214 A CN202011350214 A CN 202011350214A CN 112328259 A CN112328259 A CN 112328259A
Authority
CN
China
Prior art keywords
compiling
time
project
unit
time length
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.)
Pending
Application number
CN202011350214.3A
Other languages
English (en)
Inventor
贾学文
彭飞
邓竹立
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.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
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 Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN202011350214.3A priority Critical patent/CN112328259A/zh
Publication of CN112328259A publication Critical patent/CN112328259A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供了一种编译时长的处理方法及装置,通过获取与目标项目对应的构建日志文件,在该构建日志文件中包括多个编译单元的单元标识以及编译时间信息,接着根据编译时间信息,统计各个编译单元的编译时长,然后根据编译时长与单元标识,生成针对目标项目的编译时长,通过统计各个编译单元的编译时长,将一个项目的编译时长量化至各个编译单元的编译时长,从而可以有效对具体的编译单元进行耗时分析,有利于针对性地对项目进行改进,同时通过生成编译时长清单,可以直观、简便地查看不同编译单元的编译时长,进一步提高了项目开发、分析的便利性,保证了项目开发的效率。

Description

一种编译时长的处理方法和装置
技术领域
本发明涉及数据处理技术领域,特别是涉及一种编译时长的处理方法和一种编译时长的处理装置。
背景技术
在计算科学中,编译是将某种编程语言写成的源代码转换成另一种编译语言(目标语言)的过程。其中,将编译与链接合并在一起统称为构建,构建过程中链接耗时相对有限,可优化的空间不大,因此,构建过程的优化主要是针对编译过程进行优化。
具体的,应用程序构建需要一定的时间,对于小型项目而言,构建耗时较短,感知不明显,但对于大型项目的构建则需要较长的时间。在构建的过程中,不仅构建本身耗时较长,而且还会消耗设备的性能,若是设备性能较差,则构建过程会占用设备大量的内存、CPU处理能力,当设备资源耗尽时,开发人员无法开展其他工作,十分影响项目开发效率。
发明内容
本发明实施例是提供一种编译时长的处理方法,以解决或部分解决现有技术中无法在项目开发过程中对编译时长进行统计,并直观地展示编译时长的问题。
相应的,本发明实施例还提供了一种编译时长的处理装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种编译时长的处理方法,包括:
获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
根据所述编译时间信息,统计各个所述编译单元的编译时长;
根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
可选地,还包括:
在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示。
可选地,还包括:
响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
可选地,所述获取与目标项目对应的构建日志文件,包括:
获取目标项目的项目标识;
在预设父目录中,获取与所述项目标识对应的项目构建目录;
从所述项目构建目录中,获取与所述项目标识对应的构建日志文件。
可选地,所述从所述项目构建目录中,获取与所述项目标识对应的构建日志文件,包括:
从所述项目构建目录中,获取与所述项目标识对应的日志清单文件,所述日志清单文件为xml文件;
获取针对所述目标项目的构建类型以及起始时间;
采用所述构建类型与所述起始时间,从所述xml文件中,获取与所述项目标识对应的日志文件名;
从所述项目构建目录中,获取与所述日志文件名对应的构建日志文件。
可选地,所述根据所述编译时间信息,统计各个所述编译单元的编译时长,包括:
解析所述构建日志文件,获得多个编译单元的单元标识;
获取各个所述编译单元的编译时间信息,所述编译时间信息包括起始编译时间以及编译结束时间;
采用所述起始编译时间与所述编译结束时间,计算所述编译单元的编译时长。
可选地,所述根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单,包括:
采用所述项目标识、多个所述编译模块的单元标识以及对应的编译时长,按照所述编译时长的大小顺序,生成针对所述目标项目的编译时长表单。
本发明实施例还公开了一种编译时长的处理装置,包括:
日志文件获取模块,用于获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
编译时长统计模块,用于根据所述编译时间信息,统计各个所述编译单元的编译时长;
表单生成模块,用于根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
可选地,还包括:
显示模块,用于在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示。
可选地,还包括:
表单排序模块,用于响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
可选地,所述日志文件获取模块包括:
项目标识获取子模块,用于获取目标项目的项目标识;
构建目录获取子模块,用于在预设父目录中,获取与所述项目标识对应的项目构建目录;
日志文件获取子模块,用于从所述项目构建目录中,获取与所述项目标识对应的构建日志文件。
可选地,所述日志文件获取子模块具体用于:
从所述项目构建目录中,获取与所述项目标识对应的日志清单文件,所述日志清单文件为xml文件;
获取针对所述目标项目的构建类型以及起始时间;
采用所述构建类型与所述起始时间,从所述xml文件中,获取与所述项目标识对应的日志文件名;
从所述项目构建目录中,获取与所述日志文件名对应的构建日志文件。
可选地,所述编译时长统计模块包括:
日志文件解析子模块,用于解析所述构建日志文件,获得多个编译单元的单元标识;
时间信息获取子模块,用于获取各个所述编译单元的编译时间信息,所述编译时间信息包括起始编译时间以及编译结束时间;
编译时长计算子模块,用于采用所述起始编译时间与所述编译结束时间,计算所述编译单元的编译时长。
可选地,所述表单生成模块具体用于:
采用所述项目标识、多个所述编译模块的单元标识以及对应的编译时长,按照所述编译时长的大小顺序,生成针对所述目标项目的编译时长表单。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,通过获取与目标项目对应的构建日志文件,在该构建日志文件中包括多个编译单元的单元标识以及编译时间信息,接着根据编译时间信息,统计各个编译单元的编译时长,然后根据编译时长与单元标识,生成针对目标项目的编译时长,通过统计各个编译单元的编译时长,将一个项目的编译时长量化至各个编译单元的编译时长,从而可以有效对具体的编译单元进行耗时分析,有利于针对性地对项目进行改进,同时通过生成编译时长清单,可以直观、简便地查看不同编译单元的编译时长,进一步提高了项目开发、分析的便利性,保证了项目开发的效率。
附图说明
图1是本发明的一种编译时长的处理方法实施例的步骤流程图;
图2是本发明的一种编译时长的处理方法实施例的步骤流程图;
图3是本发明的一种编译时长的处理装置实施例的结构框图;
图4是本发明的一种电子设备的框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
Xcode为苹果公司向开发人员提供的集成开发环境,可以用于开发macOS、iOS、WatchOS和tvOS的应用程序。
Xcactivitylog为在Xcode编译过程中生成的日志文件,日志内容以SLF格式编码,以gzip压缩格式存储。
在Xcode中,Schema、Target、Project和Workspace是组成一个Xcode工程最核心的单元。其中,Target是项目工程中最小的可编译单元,每一个target对应一个编译输出,这个输出可以是一个链接库,一个可执行文件或者一个资源包。它定义了这个输出怎样被构建的所有细节,具体包括:
①编译选项,比如使用的编译器,目标平台,flag,头文件搜索路径等等;②哪些源码或者资源文件会被编译打包,哪些静态库、动态库会被链接;③build时的前置依赖、执行的脚本文件;④build生成目标的签名、Capabilities等属性。
作为一种示例,在应用程序项目开发过程中,编译和链接合并在一起的过程为构建(build),链接耗时相对有限,可优化的空间不大,因此,构建过程中的优化主要针对的是编译过程。对于编译过程的优化,则主要体现在对target的优化,因此需要一种能够对应用程序项目中各个target的耗时进行统计的方式。
因此,本发明实施例的核心发明点之一在于通过获取目标项目对应的构建日志文件,并从该构建日志文件中提取各个编译单元的单元标识以及对应的编译时间信息,然后根据编译时间信息计算各个编译单元的编译时长,再根据各个编译单元的单元标识以及对应的编译时长,生成针对目标项目的编译时长表单,在统计出开发项目中各个编译单元的编译时长的同时,通过表单的方式直观地展示各个编译单元对应的编译时长,使得开发人员可以有效根据各个编译单元的编译时长对开发项目进行改进,保证了项目开发的效率。
参照图1,示出了本发明的一种编译时长的处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
在本发明实施例中,项目可以包括在Xcode中进行开发的应用程序项目,例如针对同一款应用程序,在Xcode开发的适用于macOS、iOS、WatchOS和tvOS等平台的应用程序项目,不同的项目可以对应不同的构建日志文件,构建日志文件可以用于描述构建日志,其可以包括多个编译单元的单元标识以及各单元对应的编译时间信息。
其中,编译单元可以为Xcode中的target,为Xcode中最小的可编译单元,单元标识可以为target的名称;编译时间信息可以用于标识target的编译起始时间与编译结束时间等。
步骤102,根据所述编译时间信息,统计各个所述编译单元的编译时长;
在具体实现中,不同的编译单元对应不同的编译时间信息,则可以分别采用各个编译单元对应的编译起始时间与编译结束时间,计算编译单元的编译时长。例如,编译单元A的编译起始时间为15:20:00,编译结束时间为15:21:00,则编译单元A的编译时长为60秒;编译单元B的编译起始时间为15:20:00,编译结束时间为15:20:40,则编译单元B的编译时长为40秒;编译单元C的编译起始时间为15:20:00,编译结束时间为15:21:10,则编译单元C的编译时长为70秒等。
步骤103,根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
在具体实现中,当得到目标项目各个编译单元所对应的编译时长之后,可以采用编译时长与单元标识,生成与目标项目对应的编译时长表单,如表1所示:
单元标识 编译时长
编译单元A 60秒
编译单元B 40秒
编译单元C 70秒
编译单元D 55秒
表1
通过将目标项目的编译时长量化为各个编译单元对应的编译时长,从而方便开发人员针对性地编译时长较长的编译单元进行优化,进而降低了目标项目整体的编译时长,提高了项目开发的效率。
在本发明实施例中,通过获取与目标项目对应的构建日志文件,在该构建日志文件中包括多个编译单元的单元标识以及编译时间信息,接着根据编译时间信息,统计各个编译单元的编译时长,然后根据编译时长与单元标识,生成针对目标项目的编译时长,通过统计各个编译单元的编译时长,将一个项目的编译时长量化至各个编译单元的编译时长,从而可以有效对具体的编译单元进行耗时分析,有利于针对性地对项目进行改进,同时通过生成编译时长清单,可以直观、简便地查看不同编译单元的编译时长,进一步提高了项目开发、分析的便利性,保证了项目开发的效率。
参考图2,示出了本发明的一种编译时长的处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
在本发明实施例中,可以先获取目标项目的项目标识,接着在预设父目录中,获取与项目标识对应的项目构建目录,然后从项目构建目录中,获取与项目标识对应的构建日志文件。其中,父目录可以为Xcode中的默认目录,在该默认目录中可以查找到与项目标识对应的项目构建目录,不同的项目标识可以对应不同的项目构建目录,在项目构建目录中可以包括与项目标识对应的构建日志文件。
在具体实现中,从项目构建目录中获取构建日志文件的过程可以包括:先从项目构建目录中,获取与项目标识对应的日志清单文件,该日志清单文件可以为xml(Extensible Markup Language,可扩展标记语言)文件,接着获取针对目标项目的构建类型以及起始时间,然后采用构建类型与起始时间,从xml文件中,获取与项目标识对应的日志文件名,再从项目构建目录中,获取与日志文件名对应的构建日志文件。
其中,构建类型可以包括Application类型、framework类型、library类型以及Other类型;起始时间可以为目标项目开始编译的时间,从而可以从构建日志清单文件中,提取与起始时间对应的不同构建类型的日志文件名,然后获取日志文件名对应的构建日志文件,以便对不同构建类型下的编译单元进行编译时长的统计。
在一种示例中,可以先打开Xcode构建工作空间,并基于目标项目的项目标识,从默认目录/Library/Developer/Xcode/DerivedData中,查找对应的项目构建目录./Logs/Build,然后在项目构建目录中提取与项目标识对应的构建日志清单文件LogStoreManifest.plist。接着根据Application类型、framework类型、library类型以及Other类型和目标项目的编译起始时间,查找与起始时间对应的日志文件名,并获取日志文件名对应的构建日志文件。其中,构建日志文件的文件扩展名为xcactivitylog,文件名为UUID,其实质上是一个gzip压缩文件。在解压构建日志文件后,可以得到一个文本文件,以SLF格式编码,通过读取文本文件中的日志数据,可以得到够构建日志文件对应的多个编译单元的单元标识以及编译单元对应的编译时间信息等。
步骤202,根据所述编译时间信息,统计各个所述编译单元的编译时长;
在具体实现中,当得到构建日志文件后,可以解析构建日志文件,获得多个编译单元的单元标识,接着获取各个编译单元的起始编译时间以及编译结束时间,然后采用起始编译时间与编译结束时间,计算编译单元的编译时长,从而通过将目标项目的编译时长量化为各个编译单元对应的编译时长,从而方便开发人员针对性地编译时长较长的编译单元进行优化,进而降低了目标项目整体的编译时长,提高了项目开发的效率。
步骤203,根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单;
在具体实现中,可以采用项目标识、多个编译模块的单元标识以及对应的编译时长,按照编译时长的大小顺序,生成针对目标项目的编译时长表单,如下表2所示:
项目标识 单元标识 编译时长
项目一 编译单元C 70秒
项目一 编译单元A 60秒
项目一 编译单元B 58秒
项目一 编译单元D 55秒
项目一
表2
通过将目标项目的编译时长量化为各个编译单元对应的编译时长,从而方便开发人员针对性地编译时长较长的编译单元进行优化,进而降低了目标项目整体的编译时长,提高了项目开发的效率。
步骤204,在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示;
在具体实现中,在开始对应用程序项目进行编译之前,开发人员可以针对每一个编译单元设置一个阈值,通过该阈值对编译单元的编译结果进行评价,若编译单元的编译时长小于该阈值,则表示编译单元的编译结果符合项目开发;若编译单元的编译时长大于或等于该阈值,则表示编译单元的编译结果不符合项目开发,需要进行优化。可选地,对于不同的编译单元可以设置相同或不同的阈值,本发明对此不作限制。
在一种示例中,当得到目标项目的编译时长清单之后,可以针对每个编译单元的编译时长进行检测,若存在编译时长大于或等于阈值,则以目标显示样式对该编译单元进行显示,从而通过突出显示编译时长异常的编译单元,可以直观地为开发人员展示编译异常的编译单元,减少了开发人员进行搜索的时间,有利于快速对具体的编译单元进行耗时分析与编译改进,提高了项目开发的效率。可选地,目标显示样式包括高亮、字体加粗、字体倾斜、下划线以及选中等显示样式,本发明对此不做限制。
步骤205,响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
在具体实现中,除了自动按照编译时长的大小对编译时长清单进行排序,还可以响应作用于编译时长表单的排序操作,获取与排序操作对应的排序信息,按照排序信息对编译时长表单进行排序。
需要说明的是,编译时长表单还可以包括编译单元所属的类型、编译开始时间以及编译结束时间等等,从而开发人员可以根据自身需求通过一个或多个表单信息,对编译时长表单进行排序,从而编译时长清单,可以直观、简便地查看不同编译单元的编译时长,进一步提高了项目开发、分析的便利性,保证了项目开发的效率。
在本发明实施例中,通过获取与目标项目对应的构建日志文件,在该构建日志文件中包括多个编译单元的单元标识以及编译时间信息,接着根据编译时间信息,统计各个编译单元的编译时长,然后根据编译时长与单元标识,生成针对目标项目的编译时长,通过统计各个编译单元的编译时长,将一个项目的编译时长量化至各个编译单元的编译时长,从而可以有效对具体的编译单元进行耗时分析,有利于针对性地对项目进行改进,同时通过生成编译时长清单,可以直观、简便地查看不同编译单元的编译时长,进一步提高了项目开发、分析的便利性,保证了项目开发的效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明的一种编译时长的处理装置实施例的结构框图,具体可以包括如下模块:
日志文件获取模块301,用于获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
编译时长统计模块302,用于根据所述编译时间信息,统计各个所述编译单元的编译时长;
表单生成模块303,用于根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
在本发明的一种可选实施例中,还包括:
显示模块,用于在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示。
在本发明的一种可选实施例中,还包括:
表单排序模块,用于响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
在本发明的一种可选实施例中,所述日志文件获取模块301包括:
项目标识获取子模块,用于获取目标项目的项目标识;
构建目录获取子模块,用于在预设父目录中,获取与所述项目标识对应的项目构建目录;
日志文件获取子模块,用于从所述项目构建目录中,获取与所述项目标识对应的构建日志文件。
在本发明的一种可选实施例中,所述日志文件获取子模块具体用于:
从所述项目构建目录中,获取与所述项目标识对应的日志清单文件,所述日志清单文件为xml文件;
获取针对所述目标项目的构建类型以及起始时间;
采用所述构建类型与所述起始时间,从所述xml文件中,获取与所述项目标识对应的日志文件名;
从所述项目构建目录中,获取与所述日志文件名对应的构建日志文件。
在本发明的一种可选实施例中,所述编译时长统计模块302包括:
日志文件解析子模块,用于解析所述构建日志文件,获得多个编译单元的单元标识;
时间信息获取子模块,用于获取各个所述编译单元的编译时间信息,所述编译时间信息包括起始编译时间以及编译结束时间;
编译时长计算子模块,用于采用所述起始编译时间与所述编译结束时间,计算所述编译单元的编译时长。
在本发明的一种可选实施例中,所述表单生成模块303具体用于:
采用所述项目标识、多个所述编译模块的单元标识以及对应的编译时长,按照所述编译时长的大小顺序,生成针对所述目标项目的编译时长表单。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
根据所述编译时间信息,统计各个所述编译单元的编译时长;
根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
在本发明的一种可选实施例中,还包括:
在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示。
在本发明的一种可选实施例中,还包括:
响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
在本发明的一种可选实施例中,所述获取与目标项目对应的构建日志文件,包括:
获取目标项目的项目标识;
在预设父目录中,获取与所述项目标识对应的项目构建目录;
从所述项目构建目录中,获取与所述项目标识对应的构建日志文件。
在本发明的一种可选实施例中,所述从所述项目构建目录中,获取与所述项目标识对应的构建日志文件,包括:
从所述项目构建目录中,获取与所述项目标识对应的日志清单文件,所述日志清单文件为xml文件;
获取针对所述目标项目的构建类型以及起始时间;
采用所述构建类型与所述起始时间,从所述xml文件中,获取与所述项目标识对应的日志文件名;
从所述项目构建目录中,获取与所述日志文件名对应的构建日志文件。
在本发明的一种可选实施例中,所述根据所述编译时间信息,统计各个所述编译单元的编译时长,包括:
解析所述构建日志文件,获得多个编译单元的单元标识;
获取各个所述编译单元的编译时间信息,所述编译时间信息包括起始编译时间以及编译结束时间;
采用所述起始编译时间与所述编译结束时间,计算所述编译单元的编译时长。
在本发明的一种可选实施例中,所述根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单,包括:
采用所述项目标识、多个所述编译模块的单元标识以及对应的编译时长,按照所述编译时长的大小顺序,生成针对所述目标项目的编译时长表单。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的编译时长的处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的编译时长的处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种编译时长的处理方法,其特征在于,包括:
获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
根据所述编译时间信息,统计各个所述编译单元的编译时长;
根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述编译时长表单中,以目标显示样式对编译时长大于或等于预设阈值的编译单元进行显示。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
响应作用于所述编译时长表单的排序操作,获取与所述排序操作对应的排序信息,按照所述排序信息对所述编译时长表单进行排序。
4.根据权利要求1所述的方法,其特征在于,所述获取与目标项目对应的构建日志文件,包括:
获取目标项目的项目标识;
在预设父目录中,获取与所述项目标识对应的项目构建目录;
从所述项目构建目录中,获取与所述项目标识对应的构建日志文件。
5.根据权利要求4所述的方法,其特征在于,所述从所述项目构建目录中,获取与所述项目标识对应的构建日志文件,包括:
从所述项目构建目录中,获取与所述项目标识对应的日志清单文件,所述日志清单文件为xml文件;
获取针对所述目标项目的构建类型以及起始时间;
采用所述构建类型与所述起始时间,从所述xml文件中,获取与所述项目标识对应的日志文件名;
从所述项目构建目录中,获取与所述日志文件名对应的构建日志文件。
6.根据权利要求4或5所述的方法,其特征在于,所述根据所述编译时间信息,统计各个所述编译单元的编译时长,包括:
解析所述构建日志文件,获得多个编译单元的单元标识;
获取各个所述编译单元的编译时间信息,所述编译时间信息包括起始编译时间以及编译结束时间;
采用所述起始编译时间与所述编译结束时间,计算所述编译单元的编译时长。
7.根据权利要求4或5所述的方法,其特征在于,所述根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单,包括:
采用所述项目标识、多个所述编译模块的单元标识以及对应的编译时长,按照所述编译时长的大小顺序,生成针对所述目标项目的编译时长表单。
8.一种编译时长的处理装置,其特征在于,包括:
日志文件获取模块,用于获取与目标项目对应的构建日志文件,所述构建日志文件包括多个编译单元的单元标识以及编译时间信息;
编译时长统计模块,用于根据所述编译时间信息,统计各个所述编译单元的编译时长;
表单生成模块,用于根据所述编译时长与所述单元标识,生成针对所述目标项目的编译时长表单。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-7任一项所述的方法。
10.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的方法。
CN202011350214.3A 2020-11-26 2020-11-26 一种编译时长的处理方法和装置 Pending CN112328259A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011350214.3A CN112328259A (zh) 2020-11-26 2020-11-26 一种编译时长的处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011350214.3A CN112328259A (zh) 2020-11-26 2020-11-26 一种编译时长的处理方法和装置

Publications (1)

Publication Number Publication Date
CN112328259A true CN112328259A (zh) 2021-02-05

Family

ID=74307985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011350214.3A Pending CN112328259A (zh) 2020-11-26 2020-11-26 一种编译时长的处理方法和装置

Country Status (1)

Country Link
CN (1) CN112328259A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127001A (zh) * 2021-04-28 2021-07-16 上海米哈游璃月科技有限公司 一种代码编译过程监控方法、装置、设备和介质
CN113326046A (zh) * 2021-05-26 2021-08-31 网易(杭州)网络有限公司 获取编译时长的方法和装置
CN114328149A (zh) * 2021-12-13 2022-04-12 北京五八信息技术有限公司 编译时长的统计方法、装置、电子设备及可读介质
CN114676026A (zh) * 2022-03-28 2022-06-28 明阳产业技术研究院(沈阳)有限公司 一种处理器性能测试方法、装置、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650653A (zh) * 2009-09-04 2010-02-17 中兴通讯股份有限公司 每日构建方法和装置
CN104156224A (zh) * 2013-05-14 2014-11-19 广东电网公司信息中心 一种软件构建持续集成方法及系统
CN106066808A (zh) * 2016-05-30 2016-11-02 浪潮软件股份有限公司 一种ios应用构建服务器、集群和方法
CN106909431A (zh) * 2015-12-22 2017-06-30 阿里巴巴集团控股有限公司 定位函数性能问题的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650653A (zh) * 2009-09-04 2010-02-17 中兴通讯股份有限公司 每日构建方法和装置
CN104156224A (zh) * 2013-05-14 2014-11-19 广东电网公司信息中心 一种软件构建持续集成方法及系统
CN106909431A (zh) * 2015-12-22 2017-06-30 阿里巴巴集团控股有限公司 定位函数性能问题的方法及装置
CN106066808A (zh) * 2016-05-30 2016-11-02 浪潮软件股份有限公司 一种ios应用构建服务器、集群和方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
MAKSYM SHCHEGLOV: "Xcode Build Time Optimization (Part 1)", 《HTTPS://BETTERPROGRAMMING.PUB/XCODE-BUILD-TIME-OPTIMIZATION-PART-1-9ADB5073994B》 *
WEIXIN_26638123: "xcode 命令行构建_Xcode构建时间优化(第1部分)", 《CSDN:HTTPS://BLOG.CSDN.NET/WEIXIN_26638123/ARTICLE/DETAILS/108169609》 *
不详: "CLI tool to parse the SLF serialization format used by Xcode", 《HTTPS://IOSEXAMPLE.COM/CLI-TOOL-TO-PARSE-THE-SLF-SERIALIZATION-FORMAT-USED-BY-XCODE/》 *
剑尖: "分析Swift项目的编译时间", 《博客园:HTTPS://WWW.CNBLOGS.COM/YUNGMING/P/5160346.HTML》 *
暖CXN: "iOS 同一个工程下 使用多target来构建大量相似App", 《CSDN:HTTPS://BLOG.CSDN.NET/U011205774/ARTICLE/DETAILS/20908373》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113127001A (zh) * 2021-04-28 2021-07-16 上海米哈游璃月科技有限公司 一种代码编译过程监控方法、装置、设备和介质
CN113127001B (zh) * 2021-04-28 2024-03-08 上海米哈游璃月科技有限公司 一种代码编译过程监控方法、装置、设备和介质
CN113326046A (zh) * 2021-05-26 2021-08-31 网易(杭州)网络有限公司 获取编译时长的方法和装置
CN113326046B (zh) * 2021-05-26 2023-09-26 网易(杭州)网络有限公司 获取编译时长的方法和装置
CN114328149A (zh) * 2021-12-13 2022-04-12 北京五八信息技术有限公司 编译时长的统计方法、装置、电子设备及可读介质
CN114676026A (zh) * 2022-03-28 2022-06-28 明阳产业技术研究院(沈阳)有限公司 一种处理器性能测试方法、装置、设备和介质
CN114676026B (zh) * 2022-03-28 2023-03-10 明阳产业技术研究院(沈阳)有限公司 一种处理器性能测试方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
CN112328259A (zh) 一种编译时长的处理方法和装置
CN110825619A (zh) 接口测试用例自动生成方法、装置及存储介质
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
CN112015430A (zh) JavaScript代码翻译方法、装置、计算机设备及存储介质
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
CN111459495A (zh) 单元测试代码文件生成方法、电子装置及存储介质
US9760349B1 (en) Managing different software dependencies associated with source code
CN113760729A (zh) 一种代码检测方法和装置
CN111124480A (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN115686606A (zh) 一种项目依赖树的展示方法、装置、系统及介质
CN111522583A (zh) 一种生成配置文件的方法、装置、计算机设备及存储介质
CN112069052A (zh) 一种异常对象检测方法、装置、设备及存储介质
CN111767213B (zh) 数据库检查点的测试方法、装置、电子设备及存储介质
CN111352631B (zh) 一种接口兼容性检测方法及装置
CN113505059A (zh) 页面监控方法、装置、计算机设备及存储介质
CN112346981A (zh) 联调测试覆盖率检测方法及系统
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN113568678B (zh) 一种动态加载资源的方法、装置及电子设备
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN112953721B (zh) 一种ipa文件的解析方法、装置、设备及存储介质
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
CN113806231A (zh) 一种代码覆盖率分析方法、装置、设备和介质
CN115705297A (zh) 代码调用检测方法、装置、计算机设备以及存储介质
CN112506923A (zh) 对应业务的方法调用链路确定方法、装置、电子设备
CN114328149B (zh) 编译时长的统计方法、装置、电子设备及可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination