Ⅰ 編譯時間指什麼
若使用的是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是否有效,再根據情況決定是否去編譯。