一种数据处理方法、装置、电子设备及存储介质与流程

文档序号:32749844发布日期:2022-12-31 00:03阅读:24来源:国知局
1.本发明涉及计算机
技术领域
:,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
::2.随着技术的飞速发展,应用程序在人们的生活和工作中愈发重要,各大厂商为了更好地服务广大用户,往往会开发具有各种功能的应用程序。3.在开发应用程序的过程中,可以在终端中的开发环境中创建应用程序的工程项目,并在工程项目中编写应用程序的计算机程序代码,在编写完毕应用程序的计算机程序代码之后,可以对应用程序的工程项目构建,得到应用程序的可执行文件。对应用程序的工程项目构建的过程包括编译过程以及链接过程等。技术实现要素:4.本技术示出了一种数据处理方法、装置、电子设备及存储介质。5.第一方面,本技术示出了一种数据处理方法,应用于电子设备,所述电子设备中部署有集成开发工具,所述方法包括:6.针对在所述集成开发工具中创建的工程项目中的至少一个模型中的任意一个模型,在构建完毕所述模型之后,获取所述模型的编译日志文件;7.根据所述模型的编译日志文件,获取在编译所述模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长;根据各个第一执行时长获取在所述编译准备阶段中耗费的第一耗费时长;8.根据所述模型的编译日志文件,获取在编译所述模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在所述静态库创建阶段中耗费的第二耗费时长;9.分别获取所述模型中的各个源文件的编译日志文件;根据各个源文件的编译日志文件,分别获取在编译所述模型的过程中的在分别开始编译所述模型中的各个源文件时的编译起始时刻与分别结束编译各个源文件时的编译结束时刻;根据各个编译起始时刻与各个编译结束时刻,获取在编译所述模型的过程中的编译执行阶段中所耗费的第三耗费时长;10.根据所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长获取在编译所述模型的过程中耗费的总时长。11.在一个可选的实现方式中,所述根据各个第一执行时长获取在所述编译准备阶段中耗费的第一耗费时长,包括:12.计算各个第一执行时长之间的总和,得到所述第一耗费时长。13.在一个可选的实现方式中,在一个可选的实现方式中,所述根据各个第二执行时长获取在所述静态库创建阶段中耗费的第二耗费时长,包括:14.计算各个第二执行时长之间的总和,得到所述第二耗费时长。15.在一个可选的实现方式中,所述根据各个编译起始时刻与各个编译结束时刻,获取在编译所述模型的过程中的编译执行阶段中所耗费的第三耗费时长,包括:16.在各个编译起始时刻中选取最早的编译起始时刻,以及,在各个编译结束时刻中选取最晚的编译结束时刻;17.计算最晚的编译结束时刻与最早的编译起始时刻之间的差值,得到所述第三耗费时长。18.在一个可选的实现方式中,所述方法还包括:19.获取所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识;20.根据所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识,对所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长进行基于图像的可视化显示。21.在一个可选的实现方式中,所述方法还包括:22.获取所述工程项目中的各个模型的模型标识;23.根据各个模型标识对在分别编译各个模型的过程中分别耗费的总时长进行基于图像的可视化显示。24.在一个可选的实现方式中,编译源文件的过程包括对源文件的前端编译阶段、对于源文件的中端编译阶段以及对于源文件的后端编译阶段;25.所述方法还包括:26.对于所述模型中的任意一个源文件,根据所述源文件的编译日志文件,获取在编译所述源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译所述源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译所述源文件的过程中的后端编译阶段中耗费的后端执行时长;27.根据所述前端执行时长、所述中端执行时长以及后端执行时长,获取在编译所述源文件的过程中耗费的第四耗费时长。28.在一个可选的实现方式中,所述方法还包括:29.获取所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识;30.根据所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识,对所述前端执行时长、所述中端执行时长以及后端执行时长进行基于图像的可视化显示。31.在一个可选的实现方式中,所述方法还包括:32.获取所述模型中的各个所述源文件的源文件标识;33.根据所述模型中的各个所述源文件的源文件标识,对在分别编译所述模型中的各个源文件的过程中分别耗费的第四耗费时长进行基于图像的可视化显示。34.第二方面,本技术示出了一种数据处理装置,应用于电子设备,所述电子设备中部署有集成开发工具,所述装置包括:35.第一获取模块,用于针对在所述集成开发工具中创建的工程项目中的至少一个模型中的任意一个模型,在构建完毕所述模型之后,获取所述模型的编译日志文件;36.第二获取模块,用于根据所述模型的编译日志文件,获取在编译所述模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长;根据各个第一执行时长获取在所述编译准备阶段中耗费的第一耗费时长;37.第三获取模块,用于根据所述模型的编译日志文件,获取在编译所述模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在所述静态库创建阶段中耗费的第二耗费时长;38.第四获取模块,用于分别获取所述模型中的各个源文件的编译日志文件;第五获取模块,用于根据各个源文件的编译日志文件,分别获取在编译所述模型的过程中的在分别开始编译所述模型中的各个源文件时的编译起始时刻与分别结束编译各个源文件时的编译结束时刻;根据各个编译起始时刻与各个编译结束时刻,获取在编译所述模型的过程中的编译执行阶段中所耗费的第三耗费时长;39.第六获取模块,用于根据所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长获取在编译所述模型的过程中耗费的总时长。40.在一个可选的实现方式中,所述第二获取模块包括:41.第一计算单元,用于计算各个第一执行时长之间的总和,得到所述第一耗费时长。42.在一个可选的实现方式中,所述第三获取模块包括:43.第二计算单元,用于计算各个第二执行时长之间的总和,得到所述第二耗费时长。44.在一个可选的实现方式中,所述第五获取模块包括:45.选取单元,用于在各个编译起始时刻中选取最早的编译起始时刻,以及,在各个编译结束时刻中选取最晚的编译结束时刻;46.第三计算单元,用于计算最晚的编译结束时刻与最早的编译起始时刻之间的差值,得到所述第三耗费时长。47.在一个可选的实现方式中,所述装置还包括:48.第七获取模块,用于获取所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识;49.第一显示模块,用于根据所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识,对所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长进行基于图像的可视化显示。50.在一个可选的实现方式中,所述装置还包括:51.第八获取模块,用于获取所述工程项目中的各个模型的模型标识;52.第二显示模块,用于根据各个模型标识对在分别编译各个模型的过程中分别耗费的总时长进行基于图像的可视化显示。53.在一个可选的实现方式中,编译源文件的过程包括对源文件的前端编译阶段、对于源文件的中端编译阶段以及对于源文件的后端编译阶段;54.所述装置还包括:55.第九获取模块,用于对于所述模型中的任意一个源文件,根据所述源文件的编译日志文件,获取在编译所述源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译所述源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译所述源文件的过程中的后端编译阶段中耗费的后端执行时长;56.第十获取模块,用于根据所述前端执行时长、所述中端执行时长以及后端执行时长,获取在编译所述源文件的过程中耗费的第四耗费时长。57.在一个可选的实现方式中,所述装置还包括:58.第十一获取模块,用于获取所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识;59.第三显示模块,用于根据所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识,对所述前端执行时长、所述中端执行时长以及后端执行时长进行基于图像的可视化显示。60.在一个可选的实现方式中,所述装置还包括:61.第十二获取模块,用于获取所述模型中的各个所述源文件的源文件标识;62.第四显示模块,用于根据所述模型中的各个所述源文件的源文件标识,对在分别编译所述模型中的各个源文件的过程中分别耗费的第四耗费时长进行基于图像的可视化显示。63.第三方面,本技术示出了一种电子设备,所述电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行如上述任一方面所述的方法。64.第四方面,本技术示出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一方面所述的方法。65.第五方面,本技术示出了一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一方面所述的方法。66.本技术提供的技术方案可以包括以下有益效果:67.在本技术中,获取该模型的编译日志文件。根据该模型的编译日志文件,获取在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,根据各个第一执行时长获取在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。根据该模型的编译日志文件,获取在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。分别获取模型中的各个源文件的编译日志文件。根据各个源文件的编译日志文件,分别获取在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻。根据各个编译起始时刻与各个编译结束时刻,获取在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。根据第一耗费时长、第二耗费时长以及第三耗费时长获取在编译该模型的过程中耗费的总时长。68.一方面,本技术统计在分别编译工程项目中的各个模型的过程中分别耗费的总时长,实现了分别以工程项目中的各个模型为统计力度,统计力度更加细化,使得开发人员可以获知在分别编译工程项目中的各个模型的过程中分别耗费的总时长,以便各个模型的开发人员对在分别编译工程项目中的各个模型的过程中分别耗费的总时长进行分析,进而对各个模型分别进行优化,以实现对工程项目的优化。例如,若在编译某一模型的过程中耗费的总时长较长,且明显长于在编译其他模型的过程中分别耗费的总时长,则往往是该模型具有优化空间,例如,可以优化该模型中的计算机程序代码等,如此,可以精准地找出工程项目中需要优化的模型。69.另一方面,编译该模型的过程包括三个阶段,分别为:编译准备阶段、编译执行阶段以及静态库创建阶段等。在统计在编译工程项目中的任意一个模型的过程中耗费的总时长时,分别统计在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。70.且是根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长统计的在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长统计的在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长,以及根据在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻统计的在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。71.如此,针对在编译该模型的过程中的编译准备阶段,在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”,如此,根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,可以更准确地统计出在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。72.以及,针对在编译该模型的过程中的静态库创建阶段,在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”。如此,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,可以更准确地统计出在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。73.综上,通过先提高统计对该模型的编译的过程中的不同阶段分别耗费的时长的准确度,再根据对该模型的编译的过程中的不同阶段分别耗费的时长统计在编译该模型的过程中耗费的总时长,可以提高统计的在编译该模型的过程中耗费的总时长的准确度。附图说明74.图1是本技术的一种数据处理方法的步骤流程图。75.图2是本技术的一种数据处理方法的步骤流程图。76.图3是本技术的一种数据处理装置的结构框图。77.图4是本技术的一种电子设备的框图。78.图5是本技术的一种电子设备的框图。具体实施方式79.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。80.其中,发明人发现,对应用程序的工程项目构建的过程需要耗费一段时间。81.对于一些小型的工程项目而言,构建的过程的耗时较短,开发人员对其耗时的感知并不明显。82.但是,对于一些大型的工程项目而言,无论是在开发工程项目的场景中的构建的过程,还是在之后对工程项目更新的场景中的构建的过程,均耗时较长。由于构建的过程耗时较长且开发人员需要持续参与到构建过程中(例如开发人员需要等待构建完成之后才能干其他事情),会造成开发人员无谓等待的时长较长,浪费开发人员的工作时间,严重时还会影响开发人员心情,无形中增加了人力成本。83.因此,提出了统计对应用程序的工程项目构建的过程耗费的时长的需求,以使开发人员可以参考构建的过程耗费的时长来合理安排自己的工作,避免开发人员长时间无谓的等待,避免影响开发人员的心情,节省时间,降低人力成本。84.为了统计对应用程序的工程项目构建的过程耗费的时长,在一种方式中,由于构建的过程包括编译过程以及链接过程,如此可以分别统计编译的过程耗费的时长以及链接的过程耗费的时长。85.其中,对于编译的过程耗费的时长而言,发明人对应用程序的工程项目进行了分析并发现:应用程序中的工程项目中往往包括多个不同的模型,且多个模型往往是经由多个开发人员分别开发的。86.如此,可以统计分别编译各个模型的过程中分别耗费的总时长,以供各个模型的开发人员参考。87.例如,对于任意一个模型而言,可以获取编译日志文件,编译日志文件中记录有编译时间信息,从编译时间信息中可以解析出开始编译该模型时的起始时刻与该模型被编译完毕时的结束时刻,然后计算该结束时刻与该起始时刻之间的差值,并作为编译该模型的过程中耗费的总时长。对于其他每一个模型而言,同样如此。88.然而,发明人发现,统计出的分别编译各个模型的过程中分别耗费的总时长往往较长,在分别编译各个模型的过程中分别耗费的总时长往往较长的情况下,可以推断出开发工程项目的效率低。89.鉴于此,提出了提高开发工程项目的效率的需求。90.为了提高开发工程项目的效率,则可以降低分别编译各个模型的过程中分别耗费的总时长。91.为了降低分别编译各个模型的过程中分别耗费的总时长,发明人对分别编译工程项目中的各个模型的情况进行了统计分析并发现:各个模型是并行编译的,且对于任意一个模型而言,在编译该模型的过程中包括了多个阶段,例如包括编译准备阶段、编译执行阶段以及静态库创建阶段等。92.另外,发明人对该模型的编译的过程的编译日志文件进行了分析,并发现,在对该模型编译的过程中的任意一个阶段中,需要串行地执行该阶段涉及的多个步骤。93.进一步地,发明人又发现,有时候该阶段涉及的一些相邻的步骤并不是接连地(连续地)执行的。例如,在对该模型编译的过程中的该阶段中,在执行该阶段涉及的一个步骤之后,需要过一段时间才执行该阶段涉及的位于该一个步骤之后且与该一个步骤相邻的下一个步骤,这一段时间的空档期并未执行对该模型编译的过程中的该阶段涉及的任意一个步骤。94.发明人又对“在对该模型编译的过程中的该阶段中,在执行该阶段涉及的一个步骤之后,需要过一段时间才执行该阶段涉及的位于该一个步骤之后且与该一个步骤相邻的下一个步骤”的原因进行了分析,并发现:95.有时候,下一个步骤需要依赖其他模型中的一些库或者组件等。但是,需要执行完毕对其他模型编译的过程中的一些步骤之后,才能实现对其他模型中的一些库或者组件的配置,这样,其他模型中的一些库或者组件才能被依赖。96.如此,对于该模型而言,在执行该阶段涉及的该一个步骤之后,需要等待执行完毕对其他模型编译的过程中的一些步骤(以完成对其他模型中的一些库或者组件的配置)之后,才能执行对该模型编译的过程中的该阶段涉及的位于该一个步骤之后且与该一个步骤相邻的下一个步骤。97.如此,相当于延后了开始执行对该模型编译的过程中的该阶段涉及的位于该一个步骤之后且与该一个步骤相邻的下一个步骤的起始时刻,进而延后了对该模型编译的过程中的该阶段涉及的位于该一个步骤之后且与该一个步骤相邻的下一个步骤被执行完毕的时刻,进而延后了在编译该模型的过程中的该阶段被执行完毕的时刻。98.如此,通过上述方式计算出的编译该模型的过程中耗费的总时长会大于编译该模型的过程耗费的实际时长。99.其中,在分别编译各个模型的过程中分别耗费的总时长较长的情况下,可以推断出开发工程项目的效率低,可以去提高开发工程项目的效率。然而在分别编译各个模型的过程中分别耗费的总时长较短的情况下,可以推断出开发工程项目的效率并不低,可以不去提高开发工程项目的效率。100.而通过上述方式误计算出的编译该模型的过程中耗费的总时长较长,才有了提高开发工程项目的效率的需求,若编译该模型的过程中耗费的总时长较短的情况下,也就没有提高开发工程项目的效率的需求了。101.如此,提出了提高统计出的在编译该模型的过程中耗费的总时长的准确度的需求。102.为了提高统计出的在编译该模型的过程中耗费的总时长的准确度,参照图1,示出了本技术的一种数据处理方法的步骤流程图,该方法应用于电子设备,电子设备中部署有集成开发工具。103.集成开发工具可以包括xcode等,其可以用于开发macos、ios、watchos和tvos的应用程序等。104.开发人员可以在集成开发工具中创建应用程序的工程项目,并在工程项目中编写应用程序的计算机程序代码,其中,根据应用程序的实际业务需求,在工程项目中可以包括应用程序的至少一个模型,例如包括多个模型等,各个模型中分别可以包括多个源文件,各个源文件中均可以包括各自业务对应的计算机程序代码。105.如此,工程项目中的应用程序的计算机程序代码包括:工程项目中的应用程序的各个模型中的各个源文件中的计算机程序代码等。106.在工程项目中编写完毕应用程序的计算机程序代码之后,可以构建工程项目。构建工程项目的过程包括分别构建工程项目中的各个模型的过程。107.构建模型的过程包括对模型编译的过程以及链接的过程。108.编译可以理解为:计算机科学中,将某种编程语言写成的源代码转换成另外一种编译语言(目标语言)的过程。109.链接可以理解为:将一个或多个由编译器或汇编器生成的内容,链接为一个可执行文件的过程,链接过程通常由链接器实现。110.其中,对于在集成开发工具中创建的工程项目中的至少一个模型中的任意一个模型,在构建完毕该模型之后,可以通过如下流程来获取在编译该模型的过程中耗费的总时长,以提高获取到的在编译该模型的过程中耗费的总时长的准确度,对于在集成开发工具中创建的工程项目中的至少一个模型中的其他每一个模型,同样如此。111.其中,具体流程包括:112.在步骤s101中,获取该模型的编译日志文件。113.在构建完毕应用程序的工程项目之后,在工程项目中会记录有各个模型分别对应的编译日志文件。114.工程项目中的不同的模型对应不同的编译日志文件,模型的编译日志文件中记录了在编译模型的过程中的日志信息,例如可以包括模型的编译时间信息等。115.其中,编译模型的过程包括三个阶段,分别为:编译准备阶段、编译执行阶段以及静态库创建阶段。116.其中,编译准备阶段可以包括对工程项目中的字符串等进行词法分析、语法分析、创建索引以及建立依赖等过程。117.编译执行阶段可以包括对工程项目进行语义分析以及生成中间代码的过程。118.静态库创建阶段可以包括将工程项目中的重要的代码或公共代码编写成一个静态库文件的过程。119.在构建工程项目之前,可以在集成开发工具的项目构建设置选项中的othercflags选项和otherc++flags选项等选项中分别设置参数ftime-trace。120.该参数用于编译器插桩,例如,在构建工程项目的过程中,在编译工程项目中的模型时,会在集成开发工具中记录模型的编译时间信息,例如包括各个阶段(例如包括模型的编译准备阶段、编译执行阶段以及静态库创建阶段等)的阶段标识、执行各个阶段的起始时刻、结束时刻以及持续时长,还可以包括在编译模型的过程中的编译准备阶段中分别执行各个准备步骤的开始执行时刻、结束执行时刻以及在编译模型的过程中的静态库创建阶段中分别执行各个创建步骤的开始执行时刻以及结束执行时刻等,并输出模型的编译日志文件,模型的编译日志文件的格式可以包括json格式等。121.在本技术中,编译器是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。编译器的主要工作流程为:源代码sourcecode→预处理器reprocessor→编译器compiler→目标代码objectcode→链接器linker→可执行程序excutables。122.编译器包括llvm(lowlevelvirtualmachine,低级虚拟机)等,可以基于llvm的c语言/c++语言/扩充c的面向对象编程语言objective-c的前端编译器,例如,前端clang等。123.前端clang是基于llvm(英文全称:lowlevelvirtualmachine,中文全称:低级虚拟机)的c语言/c++语言/扩充c的面向对象编程语言objective-c的前端编译器。124.编译器也可以包括xcode等。xcode是运行在操作系统macosx上的集成开发工具(ide,integrateddevelopmentenvironment),由appleinc开发。xcode是开发macos和ios应用程序的最快捷的方式。xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。125.其中,可以先打开集成开发工具xcode的创建衍生数据目录,创建衍生数据目录可以为集成开发工具xcode的一级目录等。126.在一个例子中,创建衍生数据目录的默认路径可以为:127.~/library/developer/xcode/deriveddata/《工程项目的名称》-《工程项目的标识》)等。128.不同的工程项目的名称不同,不同的工程项目的标识不同等。129.然后可以在创建衍生数据目录中找到中间产物目录(例如:./工程项目的名称/intermediates.noindex),其中记录有工程项目中的各个模型的编译日志文件以及各个模型中的各个源文件的编译日志文件等。130.之后可以获取工程项目的名称,并根据工程项目的名称从创建衍生数据目录中查找中间产物目录,然后可以在中间产物目录中查找“pods.工程项目的名称”目录。131.然后在“pods.工程项目的名称”目录中查找工程项目中的各个模型的目录,然后在各个模型的目录中分别查找各个模型的编译日志文件。132.例如,对于任意一个模型,可以获取该模型的名称,然后可以获取包括该模型的名称、该模型的目录中的文件类型为日志类型的日志文件,并作为该模型的编译日志文件。133.编译日志文件可以包括xcactivitylog等。134.在步骤s102中,根据该模型的编译日志文件,获取在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,根据各个第一执行时长获取在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。135.在本技术中,在编译该模型的过程中的编译准备阶段中,往往会依次执行与编译准备相关的多个准备步骤。136.在本技术中,可以从该模型的编译日志文件中得到在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的开始执行时刻以及结束执行时刻等。137.例如,当得到该模型的编译日志文件后,可以将该模型的编译日志文件导入预设数据表进行解析,可以得到该模型的编译日志文件中的在编译该模型的过程中的各个阶段的阶段标识,从中可以提取中编译准备阶段的阶段标识,然后再在该模型的编译日志文件中根据编译准备阶段的阶段标识提取在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的开始执行时刻以及结束执行时刻。138.然后可以根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的开始执行时刻以及结束执行时刻,计算在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长。139.例如,对于在编译该模型的过程中的编译准备阶段中执行的任意一个准备步骤,可以计算在编译该模型的过程中的编译准备阶段中执行该准备步骤的结束执行时刻与在编译该模型的过程中的编译准备阶段中执行该准备步骤的开始执行时刻之间的差值,得到在编译该模型的过程中的编译准备阶段中执行该准备步骤的过程耗费的第一执行时长。对于在编译该模型的过程中的编译准备阶段中执行的其他每一个准备步骤,同样执行上述操作。140.在本技术一个实施例中,在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤之间往往具有逻辑先后关系的,如此,在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤往往是串行执行的。141.如此,可以计算在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长之间的总和,得到在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。142.在步骤s103中,根据该模型的编译日志文件,获取在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。143.在本技术中,在编译该模型的过程中的静态库创建阶段中,往往会依次执行与静态库创建相关的多个创建步骤。144.在本技术中,可以从该模型的编译日志文件中得到在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的开始执行时刻以及结束执行时刻等。145.例如,当得到该模型的编译日志文件后,可以将该模型的编译日志文件导入预设数据表进行解析,可以得到该模型的编译日志文件中的在编译该模型的过程中的各个阶段的阶段标识,从中可以提取中静态库创建阶段的阶段标识,然后再在该模型的编译日志文件中根据静态库创建阶段的阶段标识提取在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的开始执行时刻以及结束执行时刻。146.然后可以根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的开始执行时刻以及结束执行时刻,计算在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长。147.例如,对于在编译该模型的过程中的静态库创建阶段中执行的任意一个创建步骤,可以计算在编译该模型的过程中的静态库创建阶段中执行该创建步骤的结束执行时刻与在编译该模型的过程中的静态库创建阶段中执行该创建步骤的开始执行时刻之间的差值,得到在编译该模型的过程中的静态库创建阶段中执行该创建步骤的过程耗费的第二执行时长。对于在编译该模型的过程中的静态库创建阶段中执行的其他每一个创建步骤,同样执行上述操作。148.在本技术一个实施例中,在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤之间往往具有逻辑先后关系的,如此,在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤往往是串行执行的。149.如此,可以计算在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长之间的总和,得到在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。150.在步骤s104中,分别获取模型中的各个源文件的编译日志文件。151.在本技术中,在编译模型的过程中的编译执行阶段中,可以对该模型中的各个源文件编译,编译源文件的过程包括三个阶段,分别为:前端编译阶段、中端编译阶段以及后端编译阶段等。152.在执行完毕编译该模型的过程中的编译执行阶段之后,在工程项目中会记录有该模型中的各个源文件的编译日志文件。153.该模型中的不同的源文件对应不同的编译日志文件,源文件的编译日志文件中记录了在编译源文件的过程中的日志信息,例如可以包括源文件的编译时间信息等。154.在构建工程项目之前,可以在集成开发工具的项目构建设置选项中的othercflags选项和otherc++flags选项等选项中分别设置参数ftime-trace。155.该参数用于编译器插桩,例如,在构建工程项目的过程中,在编译工程项目中的模型中的源文件时,会在集成开发工具中记录源文件的编译时间信息,例如包括各个阶段(例如包括源文件的前端编译阶段、中端编译阶段以及后端编译阶段等)的阶段标识、执行各个阶段的起始时刻、结束时刻以及持续时长等,并输出源文件的编译日志文件,源文件的编译日志文件的格式可以包括json格式等。156.如此,可以从源文件的编译日志文件中至少提取到在编译模型的过程中的在开始编译模型中的源文件时的编译起始时刻与结束编译源文件时的编译结束时刻等。157.其中,可以先打开集成开发工具xcode的创建衍生数据目录,创建衍生数据目录可以为集成开发工具xcode的一级目录等。158.在一个例子中,创建衍生数据目录的默认路径可以为:159.~/library/developer/xcode/deriveddata/《工程项目的名称》-《工程项目的标识》)等。160.不同的工程项目的名称不同,不同的工程项目的标识不同等。161.然后可以在创建衍生数据目录中找到中间产物目录(例如:./工程项目的名称/intermediates.noindex),其中记录有工程项目中的各个模型的编译日志文件以及各个模型中的各个源文件的编译日志文件等。162.之后可以获取工程项目的名称,并根据工程项目的名称从创建衍生数据目录中查找中间产物目录,然后可以在中间产物目录中查找“pods.工程项目的名称”目录。163.然后在“pods.工程项目的名称”目录中查找工程项目中的各个模型的目录,然后对于多个模型中的任意一个模型,可以在该模型的目录中,根据该模型中的各个源文件的名称分别查找该模型中的各个源文件的编译日志文件。164.例如,对于该模型中的任意一个源文件,在该模型的目录中,可以获取包括该模型中的该源文件的名称、且文件类型为日志类型的日志文件,并作为该模型中的该源文件的编译日志文件。165.编译日志文件可以包括xcactivitylog等。166.在步骤s105中,根据各个源文件的编译日志文件,分别获取在编译该模型的过程中的在分别开始编译该模型中的各个源文件时的编译起始时刻与分别结束编译各个源文件时的编译结束时刻。根据各个编译起始时刻与各个编译结束时刻,获取在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。167.在本技术中,对于该模型中的多个源文件中的任意一个源文件,可以从该源文件的编译日志文件中获取在编译该模型的过程中的在开始编译该模型中的该源文件时的编译起始时刻与结束编译该源文件时的编译结束时刻。对于在该模型中的多个源文件中的其他每一个源文件,同样执行上述操作。168.然后可以根据在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻,计算在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。169.例如,可以在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻中选取最早的编译起始时刻,以及,在编译该模型的过程中的在结束编译该模型中的各个源文件时的编译结束时刻中选取最晚的编译结束时刻,然后计算最晚的编译结束时刻与最早的编译起始时刻之间的差值,得到第三耗费时长。170.在步骤s106中,根据第一耗费时长、第二耗费时长以及第三耗费时长获取在编译该模型的过程中耗费的总时长。171.在本技术一个实施例中,编译模型的过程包括三个阶段,分别为:编译准备阶段、编译执行阶段以及静态库创建阶段。172.编译准备阶段与编译执行阶段之间可以是相邻的,编译执行阶段与静态库创建阶段之间可以是相邻的,如此,可以对在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长,在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长以及在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长求和,得到在编译该模型的过程中耗费的总时长。173.例如,假设在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长为30秒,在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长为20秒,在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长为10秒,在编译该模型的过程中耗费的总时长可以为60秒。174.在本技术中,步骤s101与步骤s104可以并行执行。175.在执行完毕步骤s101之后,可以并行步骤s102与步骤s103。176.在执行完毕步骤s104之后,可以执行步骤s105。177.在执行完毕步骤s102、步骤s103以及步骤s105之后,可以执行步骤s106。178.在本技术中,获取该模型的编译日志文件。根据该模型的编译日志文件,获取在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,根据各个第一执行时长获取在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。根据该模型的编译日志文件,获取在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。分别获取模型中的各个源文件的编译日志文件。根据各个源文件的编译日志文件,分别获取在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻。根据各个编译起始时刻与各个编译结束时刻,获取在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。根据第一耗费时长、第二耗费时长以及第三耗费时长获取在编译该模型的过程中耗费的总时长。179.一方面,本技术统计在分别编译工程项目中的各个模型的过程中分别耗费的总时长,实现了分别以工程项目中的各个模型为统计力度,统计力度更加细化,使得开发人员可以获知在分别编译工程项目中的各个模型的过程中分别耗费的总时长,以便各个模型的开发人员对在分别编译工程项目中的各个模型的过程中分别耗费的总时长进行分析,进而对各个模型分别进行优化,以实现对工程项目的优化。例如,若在编译某一模型的过程中耗费的总时长较长,且明显长于在编译其他模型的过程中分别耗费的总时长,则往往是该模型具有优化空间,例如,可以优化该模型中的计算机程序代码等,如此,可以精准地找出工程项目中需要优化的模型。180.另一方面,编译该模型的过程包括三个阶段,分别为:编译准备阶段、编译执行阶段以及静态库创建阶段等。在统计在编译工程项目中的任意一个模型的过程中耗费的总时长时,分别统计在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。181.且是根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长统计的在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长统计的在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长,以及根据在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻统计的在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。182.如此,针对在编译该模型的过程中的编译准备阶段,在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”,如此,根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,可以更准确地统计出在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。183.以及,针对在编译该模型的过程中的静态库创建阶段,在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”。如此,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,可以更准确地统计出在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。184.综上,通过先提高统计对该模型的编译的过程中的不同阶段分别耗费的时长的准确度,再根据对该模型的编译的过程中的不同阶段分别耗费的时长统计在编译该模型的过程中耗费的总时长,可以提高统计的在编译该模型的过程中耗费的总时长的准确度。185.进一步地,在统计出在分别编译各个模型的过程中分别耗费的总时长之后,可以对在分别编译各个模型的过程中分别耗费的总时长进行可视化显示。186.例如,可以获取工程项目中的各个模型的模型标识,不同的模型的模型标识不同,然后根据各个模型的模型标识对在分别编译各个模型的过程中分别耗费的总时长进行基于图像的可视化显示。187.例如,可以根据各个模型的模型标识以及在分别编译各个模型的过程中分别耗费的总时长生成googletrace格式文件,并根据googletrace格式文件绘制火焰图,使得开发人员能够通过火焰图了解到在分别编译各个模型的过程中分别耗费的总时长。188.以便开发人员基于可视化的时长图对工程项目进行分析,进而对工程项目进行优化。例如,若在编译某一模型的过程中耗费的总时长较长,且明显长于在编译其他模型的过程中分别耗费的总时长,则往往是该模型具有优化空间,例如,可以优化该模型中的计算机程序代码等。189.进一步地,对于工程项目中包括的至少一个模型中的任意一个模型,在得到在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长之后,可以对在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长进行可视化显示,以便开发人员基于可视化的时长图对该模型进行分析,进而对该模型进行优化。190.例如,若在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长较长,且明显长于在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长以及明显长于在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长,则该模型中的涉及编译执行阶段的计算机程序代码具有优化空间。191.例如,可以获取编译准备阶段的阶段标识、静态库创建阶段的阶段标识以及编译执行阶段的阶段标识,准备阶段的阶段标识、静态库创建阶段的阶段标识以及编译执行阶段的阶段标识之间两两不同。然后可以根据编译准备阶段的阶段标识、静态库创建阶段的阶段标识以及编译执行阶段的阶段标识,对第一耗费时长、第二耗费时长以及第三耗费时长进行基于图像的可视化显示。192.例如,可以根据编译准备阶段的阶段标识、静态库创建阶段的阶段标识、编译执行阶段的阶段标识、在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长生成googletrace格式文件,并根据googletrace格式文件绘制火焰图,使得开发人员能够通过火焰图了解到在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长。193.例如,若在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长较长,且明显长于在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及明显长于在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长,则该模型中的涉及编译准备阶段的计算机程序代码具有优化空间。194.例如,若在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长较长,且明显长于在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长以及明显长于在编译该模型的过程中的编译执行阶段中耗费的第三耗费时长,则该模型中的涉及静态库创建阶段的计算机程序代码具有优化空间。195.在本技术中,编译源文件的过程包括对源文件的前端编译阶段、对源文件的中端编译阶段以及对源文件的后端编译阶段。196.进一步地,对于该模型中的任意一个源文件,可以获取在编译该源文件的过程中耗费的第四耗费时长,对于该模型中的其他每一个源文件,同样如此。197.参见图2,具体流程包括:198.在步骤s201中,根据该源文件的编译日志文件,获取在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长。199.其中,该源文件的编译日志文件中可以包括有:在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长。200.如此,可以直接从该源文件的编译日志文件中提取在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长。201.在步骤s202中,根据前端执行时长、中端执行时长、后端执行时长,获取在编译该源文件的过程中耗费的第四耗费时长。202.在本技术一个实施例中,编译源文件模型的过程包括三个阶段,分别为:前端编译阶段、中端编译阶段以及后端编译阶段。前端编译阶段与中端编译阶段之间可以是相邻的,中端编译阶段与后端编译阶段之间可以是相邻的。203.如此,对于该模型中的多个源文件中的任意一个源文件,可以对在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长求和,得到在编译该源文件的过程中耗费的第四耗费时长。204.对于在该模型中的多个源文件中的其他每一个源文件,同样执行上述操作。205.进一步地,在统计出对在分别编译该模型中的各个源文件的过程中分别耗费的第四耗费时长之后,可以对在分别编译该模型中的各个源文件的过程中分别耗费的第四耗费时长进行可视化显示。206.例如,可以获取该模型中的各个源文件的源文件标识;不同的源文件的源文件标识不同,根据该模型中的各个源文件的源文件标识,对在分别编译该模型中的各个源文件的过程中分别耗费的第四耗费时长进行基于图像的可视化显示。207.例如,可以根据该模型中的各个源文件的源文件标识以及在分别编译该模型中的各个源文件的过程中分别耗费的第四耗费时长生成googletrace格式文件,并根据googletrace格式文件绘制火焰图,使得开发人员能够通过火焰图了解到在分别编译该模型中的各个源文件的过程中分别耗费的第四耗费时长。208.以便开发人员基于可视化的时长图对该模型进行分析,进而对该模型进行优化,例如,若在编译该模型中的某一源文件的过程中耗费的第四耗费时长较长,且明显长于在编译该模型中的其他源文件的过程中分别耗费的第四耗费时长,则往往是该源文件具有优化空间,例如,可以优化该源文件中的计算机程序代码等。209.进一步地,对于该模型中的多个源文件中的任意一个源文件,在得到在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长、在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长之后,可以对在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长、在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长进行可视化显示,以便开发人员基于可视化的时长图对该源文件进行分析,进而对该源文件进行优化。210.例如,可以获取前端编译阶段的阶段标识、中端编译阶段的阶段标识以及后端编译阶段的阶段标识,前端编译阶段的阶段标识、中端编译阶段的阶段标识以及后端编译阶段的阶段标识之间两两不同。然后可以根据前端编译阶段的阶段标识、中端编译阶段的阶段标识以及后端编译阶段的阶段标识,对前端执行时长、中端执行时长以及后端执行时长进行基于图像的可视化显示。211.例如,可以根据前端编译阶段的阶段标识、中端编译阶段的阶段标识、后端编译阶段的阶段标识、在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长、在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长生成googletrace格式文件,并根据googletrace格式文件绘制火焰图,使得开发人员能够通过火焰图了解到在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长、在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长。212.例如,若在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长较长,且明显长于在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长以及明显长于在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长,则该源文件中的涉及前端编译阶段的计算机程序代码具有优化空间。213.例如,若在编译该源文件的过程中的中端编译阶段中耗费的中端执行时长较长,且明显长于在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长以及明显长于在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长,则该源文件中的涉及中端编译阶段的计算机程序代码具有优化空间。214.例如,若在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长较长,且明显长于在编译该源文件的过程中的前端编译阶段中耗费的前端执行时长以及明显长于在编译该源文件的过程中的后端编译阶段中耗费的后端执行时长,则该源文件中的涉及后端编译阶段的计算机程序代码具有优化空间。215.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本技术所必须的。216.参照图3,示出了本技术的一种数据处理装置的结构框图,应用于电子设备,所述电子设备中部署有集成开发工具,所述装置包括:217.第一获取模块11,用于针对在所述集成开发工具中创建的工程项目中的至少一个模型中的任意一个模型,在构建完毕所述模型之后,获取所述模型的编译日志文件;218.第二获取模块12,用于根据所述模型的编译日志文件,获取在编译所述模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长;根据各个第一执行时长获取在所述编译准备阶段中耗费的第一耗费时长;219.第三获取模块13,用于根据所述模型的编译日志文件,获取在编译所述模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在所述静态库创建阶段中耗费的第二耗费时长;220.第四获取模块14,用于分别获取所述模型中的各个源文件的编译日志文件;第五获取模块15,用于根据各个源文件的编译日志文件,分别获取在编译所述模型的过程中的在分别开始编译所述模型中的各个源文件时的编译起始时刻与分别结束编译各个源文件时的编译结束时刻;根据各个编译起始时刻与各个编译结束时刻,获取在编译所述模型的过程中的编译执行阶段中所耗费的第三耗费时长;221.第六获取模块16,用于根据所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长获取在编译所述模型的过程中耗费的总时长。222.在一个可选的实现方式中,所述第二获取模块包括:223.第一计算单元,用于计算各个第一执行时长之间的总和,得到所述第一耗费时长。224.在一个可选的实现方式中,所述第三获取模块包括:225.第二计算单元,用于计算各个第二执行时长之间的总和,得到所述第二耗费时长。226.在一个可选的实现方式中,所述第五获取模块包括:227.选取单元,用于在各个编译起始时刻中选取最早的编译起始时刻,以及,在各个编译结束时刻中选取最晚的编译结束时刻;228.第三计算单元,用于计算最晚的编译结束时刻与最早的编译起始时刻之间的差值,得到所述第三耗费时长。229.在一个可选的实现方式中,所述装置还包括:230.第七获取模块,用于获取所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识;231.第一显示模块,用于根据所述编译准备阶段的阶段标识、所述静态库创建阶段的阶段标识以及所述编译执行阶段的阶段标识,对所述第一耗费时长、所述第二耗费时长以及所述第三耗费时长进行基于图像的可视化显示。232.在一个可选的实现方式中,所述装置还包括:233.第八获取模块,用于获取所述工程项目中的各个模型的模型标识;234.第二显示模块,用于根据各个模型标识对在分别编译各个模型的过程中分别耗费的总时长进行基于图像的可视化显示。235.在一个可选的实现方式中,编译源文件的过程包括对源文件的前端编译阶段、对于源文件的中端编译阶段以及对于源文件的后端编译阶段;236.所述装置还包括:237.第九获取模块,用于对于所述模型中的任意一个源文件,根据所述源文件的编译日志文件,获取在编译所述源文件的过程中的前端编译阶段中耗费的前端执行时长,在编译所述源文件的过程中的中端编译阶段中耗费的中端执行时长以及在编译所述源文件的过程中的后端编译阶段中耗费的后端执行时长;238.第十获取模块,用于根据所述前端执行时长、所述中端执行时长以及后端执行时长,获取在编译所述源文件的过程中耗费的第四耗费时长。239.在一个可选的实现方式中,所述装置还包括:240.第十一获取模块,用于获取所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识;241.第三显示模块,用于根据所述前端编译阶段的阶段标识、所述中端编译阶段的阶段标识以及所述后端编译阶段的阶段标识,对所述前端执行时长、所述中端执行时长以及后端执行时长进行基于图像的可视化显示。242.在一个可选的实现方式中,所述装置还包括:243.第十二获取模块,用于获取所述模型中的各个所述源文件的源文件标识;244.第四显示模块,用于根据所述模型中的各个所述源文件的源文件标识,对在分别编译所述模型中的各个源文件的过程中分别耗费的第四耗费时长进行基于图像的可视化显示。245.在本技术中,获取该模型的编译日志文件。根据该模型的编译日志文件,获取在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,根据各个第一执行时长获取在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。根据该模型的编译日志文件,获取在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,根据各个第二执行时长获取在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。分别获取模型中的各个源文件的编译日志文件。根据各个源文件的编译日志文件,分别获取在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻。根据各个编译起始时刻与各个编译结束时刻,获取在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。根据第一耗费时长、第二耗费时长以及第三耗费时长获取在编译该模型的过程中耗费的总时长。246.一方面,本技术统计在分别编译工程项目中的各个模型的过程中分别耗费的总时长,实现了分别以工程项目中的各个模型为统计力度,统计力度更加细化,使得开发人员可以获知在分别编译工程项目中的各个模型的过程中分别耗费的总时长,以便各个模型的开发人员对在分别编译工程项目中的各个模型的过程中分别耗费的总时长进行分析,进而对各个模型分别进行优化,以实现对工程项目的优化。例如,若在编译某一模型的过程中耗费的总时长较长,且明显长于在编译其他模型的过程中分别耗费的总时长,则往往是该模型具有优化空间,例如,可以优化该模型中的计算机程序代码等,如此,可以精准地找出工程项目中需要优化的模型。247.另一方面,编译该模型的过程包括三个阶段,分别为:编译准备阶段、编译执行阶段以及静态库创建阶段等。在统计在编译工程项目中的任意一个模型的过程中耗费的总时长时,分别统计在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长、在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长以及在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。248.且是根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长统计的在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长统计的在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长,以及根据在编译该模型的过程中的在开始编译该模型中的各个源文件时的编译起始时刻与结束编译各个源文件时的编译结束时刻统计的在编译该模型的过程中的编译执行阶段中所耗费的第三耗费时长。249.如此,针对在编译该模型的过程中的编译准备阶段,在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”,如此,根据在编译该模型的过程中的编译准备阶段中分别执行各个准备步骤的过程分别耗费的第一执行时长,可以更准确地统计出在编译该模型的过程中的编译准备阶段中耗费的第一耗费时长。250.以及,针对在编译该模型的过程中的静态库创建阶段,在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长中不存在“等待执行在对其他模型编译的过程中的一些步骤耗费的时长”。如此,根据在编译该模型的过程中的静态库创建阶段中分别执行各个创建步骤的过程分别耗费的第二执行时长,可以更准确地统计出在编译该模型的过程中的静态库创建阶段中耗费的第二耗费时长。251.综上,通过先提高统计对该模型的编译的过程中的不同阶段分别耗费的时长的准确度,再根据对该模型的编译的过程中的不同阶段分别耗费的时长统计在编译该模型的过程中耗费的总时长,可以提高统计的在编译该模型的过程中耗费的总时长的准确度。252.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。253.可选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。254.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。255.图4是本技术示出的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。256.参照图4,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。257.处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。258.存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图像,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。259.电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。260.多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。261.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收到的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。262.i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。263.传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。264.通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播操作信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。265.在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。266.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。267.图5是本技术示出的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。268.参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。269.电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(i/o)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。270.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。271.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。272.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。273.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。274.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。275.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。276.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。277.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。278.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。279.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1