导航:首页 > 源码编译 > 获取项目编译时间

获取项目编译时间

发布时间:2022-11-16 01:52:35

编译时间指什么

若使用的是vivo手机,编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。

Ⅱ Xcode 构建速度优化(一)衡量编译时间

随着项目不断迭代,工程文件越来越多,引用的三方库也越来越多,这些直接导致编译时间的不断增加,完整编译一次项目动辄需要五分钟以上时间,实在有些影响开发效率,是时候来一波提速了。

为编译和构建提速,首先我们需要对速度有一个衡量标准:准确获得构建用时

首先,我们需要定义要衡量和优化的内容。 有两种选择:

xcode默认情况下会跟踪所有构建,我们可以通过更改xcode相关设置,来在活动查看器中显示出构建时间,通过命令行:

每次编译成功后,会在Successed之后显示出所用时间:

Xcode Build Timing Summary是Xcode10中加入的用于查看获取构建时间和发现用时瓶颈方面的最有利工具。 可以通过Proct->Perform Action->Build With Timing Summary来开启:这样在 Build Log 的末尾就会添加 Timing Summary Log。我们可以通过这个 log 看到哪个阶段是耗时的,便于我们进行优化。

如上图中: xib阶段的编译耗时明显是比普通c文件要多的,意味着我们可以通过减少xib方式来优化提升速度
而c文件的编译用时比总时间还要长,是因为c文件是并行编译的

在命令行中同样可以开启这个功能:

常用的第三方工具有 BuildTimeAnalyzer 、 xcode-build-times-rendering 、 XCLogParser 。

BuildTimeAnalyzer可以统计可以得出某个文件的类型检查时长,每个表达式的类型检查时长。

xcode-build-times-rendering是一个Ruby编写的第三方工具,可以方便地分别测量目标的构建时间并在图表上显示它们,使用gem安装

接下来使用这个工具自带命令配置项目

然后构建项目并生成报告:

这个工具使用上比较简单,缺点是只能从宏观上生成各个target编译的整体图标,无法详细列出各个内部编译明细

XCLogParser可以详细列出各个Target和内部每个文件的编译耗时,对我们分析编译时间瓶颈非常有帮助,它的工作原理主要是做为解析器,通过解析xcode编译生成的xcactivitylog日志来记录
安装:

编译项目后,进行安装

安装成功后通过命令:

会自动在当前目录的 build/xclogparser/reports/ 路径下生成报告,其中--project参数需要设置为待分析项目的名字,并注意当前在终端切换到希望写入日志的目录。

报告截图:

这个工具将作为我们后面分析提升编译构建速度的主要使用工具。

经过我多次在不同时间段,不同电脑上不断尝试编译,
我发现编译耗时是一个比较玄的东西,及时在同一台电脑,同一个项目, 同一套环境配置下,编译用时也会随着电脑当前状态(包括同时打开进程、散热等等)上下大幅跳动,就像算法时间复杂度一样,有时候我们明明做了一些细微的优化,但是结果反而是编译耗时增加了,这是很正常的事情
所以,衡量这个标准需要我们取多次试验中的平均值作为参考。

java 程序如何得到编译时间 像C 里的 __DATE__ 一样 printf("%s", __DATE__);

就我所知 貌似不能像C那么简单搞定
因为java最后都是编译成.class文件 所以也许你可以通过找到对应的.class文件的最后修改时间来当作编译时间
File file = new File("MyClass.class");
long time = file.lastModified();

仅供参考

Ⅳ c#中如何将记录项目的最后编译时间

可以用以下语句来获得最后编译时间。

System.IO.File.GetLastWriteTime(this.GetType().Assembly.Location)
原来在C++中,有个__DATE__,__TIME__,__FILE__,__LINE__这样的异性宏定义可以使用,但是在C#中,不能使用

Ⅳ 什么是编译时间

用户使用编译程序对其个人编制的源程序进行编译的过程称为程序编译。编译时间(compiling time) 指编译程序将源程序编译成目标程序所占用的时间。

1 如何减少编译时间
一是执行每日自动构建。每日自动构建的原理很简单:安装每日构建工具CCNET(不熟悉该工具的同学可以去搜索下)。然后在源码服务器上安装编译环境。源码服务器每天获取最新代码,每天下班后开始编译最新代码,经过一个晚上基本上就能把库和应用程序都编好,到了第二天开发人员只需下载最新的库文件和代码文件而不须自己重新编译。这样就能大大节省时间了。
二是使用联合编译器IncrediBuild。这个工具估计大家都不陌生。最近试验了一个新想法,写一个批处理文件,将SVN和IncrediBuild绑在一起,实现了从源码更新到工程编译。


2 批处理文件的命令语法
svnupinclude//更新服务器的include文件夹到本地
BuildConsoleD:\Code\MySolution.sln/prj="MyApp"/build/OpenMonitor/cfg="Debug|Win32"
BuildConsole是IncrediBuild的命令行工具,
D:\Code\MySolution.sln是你的解决方案文件绝对路径,
/prj参数设置你要编译的工程,如果你要编译多个工程,可以这样设置,/prj="prj1,prj2,prj3",
/prj参数也支持通配符,/prj="*"即为编译MySolution.sln下的所有工程
/build为编译工程,若改为/rebuild即是清理重编工程。
/OpenMonitor为打开IncrediBuild的图形化界面,去掉该参数则不出现图形界面。
/cfg为编译设置选项,如要编release版本,可以改为Release|Win32。
把上面的代码保存为BuildDebug.bat,把文件保存在D:\Code\路径下(即源码根目录,下面有include、src和vs三个文件夹),然后运行这个批处理文件就相当于把从更新源码到编译源码这一系列动作都执行了。

Ⅵ 开发JAVA程序如何获取系统编译时间

import java.util.Date;
import java.text.SimpleDateFormat;

public class NowString {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
}
}

Ⅶ eclipse怎么查看编译花了多少时间

记录一个起始时间,记录一个结束时间,两个相减就是程序运行时间,代码如下

longstart=System.currentTimeMillis();	//记录起始时间
try{
Thread.sleep(5000); //线程睡眠5秒,让运行时间不那么小
}catch(InterruptedExceptione){
e.printStackTrace();
}
longend=System.currentTimeMillis(); //记录结束时间
System.out.println(end-start); //相减得出运行时间

得出的单位是毫秒。

Ⅷ centos中如何统计程序编译的时间比如我安装lnmp,我需要计算它的安装所用时间,应该怎么操作

用time命令或者是/usr/bin/time
比如说你想知道编译lnmp的时间,就是
# time -p ./configure
当./configure执行完毕的时候time命令结束,然后会返回一个时间,就是你执行./configure的时间
同样
# time -p make 也会知道make用的时间,如果说要整个的安装时间,可以用命令
# time -p ./configure && make && make install
返回的结果就是整个安装过程所用的时间~
望采纳

Ⅸ 我应该买什么PC来获取Quartus II的最快速编译时间

最后修改: 2012 年9 月05 日
产品类别: 设计软件
产品领域: 安装/授权(设计软件)
产品子领域: 操作系统支持/系统要求
标题说明Altera为Quartus03 II 只推荐最低硬件要求,最低可用物理RAM,和交换空间。这些推荐是在载有Quartus II的readme.txt格式中和在器件支持版本注释中,存在于Quartus II Development Software documentation page最低要求使Quartus II 能够运行。如果您具有大的设计和想要最佳编译时间,Altera建议更高的配置。 Quartus II需要大量的处理器和存储器资源。CPU速度是影响编译次数性能的主要因素。请考虑多核处理器和多CPU的配置,从而利用多线程编译。使用分化快设计和增量式编译来完全利用可用内核。请参考 Quartus II手册的第二卷的Recing Compilation Time章节。除此之外,解决以下三个瓶颈:通过处理器最大化芯片上的缓存访问最小化虚拟储存器的使用最小化硬盘访问时间通过处理器最大化芯片上的缓存访问选择具有大量的芯片上缓存的CPU。最小化虚拟储存的使用使用64-位体系结构和操作系统,伴随足够量的快速速度等级RAM。随着器件大小和软件复杂性的增长,内存使用也在增加。针对较新的器件系列(Stratix03 III 和更新的版本)的设计比用于32位应用的RAM的2GB需要更多,所以使用64位操作系统和软件。对于一个64位系统,对于更大的器件系列,一个单编译应该已经访问至少RAM的8GB (安装8到10GB)和更多。对于每种器件的最低安装的RAM信息,请参考器件支持版本注释,存在于Quartus II Development Software documentation page。最短的硬盘访问时间使用快速或固态硬盘安装一个本地SCSI或基于SATA的体系结构。磁盘也可以被RAID条带化,以便更快的访问。 使用网络磁盘可以是编译时间的一个显着地瓶颈。如果您必须在网络硬盘上存储工程源,Altera建议使用网络文件系统的源文件创建一个本地工程,保持项目目录当地和源文件远程。Quartus II 只读取几次源文件,但是需要访问Quartus II数据库(db and incremental_db)很多次。补充注释从32位转换到64位 OS并且软件可能不会减少编译时间。64位Quartus II使能够访问每进程较大的储存映射(没有2GB限制),但是使用64位OS或软件时可能看不到提高,如果我们的设计没有达到2GB限制并且在32位OS上使用低虚拟储存。您可能看到编译次数的稍微降低,由于64位进程的较多开销。Quartus II 10.0的编译次数性能和更新的64位对比32位(64位机上)是可比较的,如同Windows OS的性能对比相等的Linux (32位对比32位,或者64位对比64位)。

Ⅹ 怎么知道oracle中一个存储过程最后一次被编译的时间

个人观点:
1 last_ddl_time就是指最后一次编译的时间。 你认为的create or replace 其实就是一种编译

2 A调用B引发的B的重新编译。
我认为A调用B是不会引起B的编译的。从2个方面解释:
1) 我个人工作经验中没有发现A调用B会让B重新编译。
案例:B中引用了一张表。我将表删除了,编译B。那么B出现了错误。此时我又将表还原了。再去编译A。注意:A中调用B。但是B是错误的。如果调用B让B也编译的话,那么B会编译通过,A没问题。事实上:由于B的错误,导致A编译也错误。可见B并没有编译。
2)存储过程的一个优点是什么?就是一次编译,到处运行。这个编译时比较消耗资源的。从常理上讲,如果每次调用A引发了B的编译,那么存储过程的上述的优点浩然无存。所以从常理推断,A调用B不会引发B的编译。

---------------------------------- -----------------------------------------
早上看到了你昨晚发的信息。尝试了下。你的结论是有一半是正确的。
正确的解释应该是:
1 假设A、B都是正确的 那么调用的时候无需编译;
2 假设A、B是无效的。那么调用的时候会去编译它。
Oracle会自己判断A、B是否有效,再根据情况决定是否去编译。

阅读全文

与获取项目编译时间相关的资料

热点内容
手机云视频加密怎么关 浏览:72
北京文件夹加密多少钱 浏览:671
什么是车鉴定app 浏览:66
战地一私人服务器怎么买 浏览:497
陈天程序员 浏览:833
编译原理如何运用到编程中 浏览:17
linux选择数据库 浏览:376
php两个数组差集 浏览:978
迷你pdf阅读器下载 浏览:433
做一个python小程序 浏览:655
pythonossystem和 浏览:645
win2008如何搭建ftp服务器 浏览:53
安卓手机为什么不翻牌 浏览:546
删除pkpm及相关文件夹 浏览:481
房贷解压银行内部流程 浏览:734
安卓手机如何更改语音 浏览:601
android红包实现 浏览:734
苹果的nvme为什么安卓不用 浏览:32
python输入单词统计个数 浏览:998
脚本软件提取源码 浏览:281