1. 程式人生 > >Java的日期與時間(三)計算執行時間

Java的日期與時間(三)計算執行時間

Java的日期與時間

三、Java中計算執行時間

在Java中使用System.currentTimeMillis()來記錄程式執行時間非常簡單。只要在操作前後各記錄一次時間,計算差值即可:

long startTime = System.currentTimeMillis();
callOperationToTime();
long endTime   = System.currentTimeMillis();
long totalTime = endTime - startTime;

最終得到的totalTime,即為callOperationToTime()的執行時間。

重複這個操作
因為System.currentTimeMillis()不能返回精確時間,因為將某個操作執行多次並取平均值,是一個不錯的思路。也許10次,100次,1000次,甚至更多次的測試,可以把誤差磨平。另一個原因是,重複一個操作,可以讓Java虛擬機器載入類時包含這個程式碼,JIT編譯它,也許還會進行優化。

編寫一個Timer類
由於上述程式碼較為繁瑣,我將其封裝在一個Timer類中。如下:
(原作者寫的類其實也很煩,稍微改了改,需要原始碼可上原網站此章節檢視)

public class Timer {
  private long startTime = 0;

  public void
Timer(){ startTime = System.currentTimeMillis(); } public long getTotalTime() { long endTime = System.currentTimeMillis(); return startTime - endTime; } }

使用方式如下:

Timer timer = new Timer();
callOperationToTime();
long totalTime = timer.getTotalTime();

相關推薦

Java日期時間計算執行時間

Java的日期與時間 三、Java中計算執行時間 在Java中使用System.currentTimeMillis()來記錄程式執行時間非常簡單。只要在操作前後各記錄一次時間,計算差值即可: long startTime = Syste

Java物件JVM Java物件在Java虛擬機器中的引用訪問方式

Java物件與JVM(三) Java物件在Java虛擬機器中的引用訪問方式         在前面兩篇文章中瞭解到Java物件例項是如何在HotSpot虛擬機器的Java堆中建立的,以及建立後的記憶體佈局是怎樣的。 下面我們詳細瞭解在Java堆中的Java物件是如何訪

Java 8 新特性新的日期時間

老日期類 一說到在Java中處理日期和時間,我們首先想到的肯定是java.util.Date類。確實,由於很多教材和文獻都比較老,所以大多數人學習Java的時候使用的都是這個類。而且這個類確實在整個Java生態中擔任過重要的作用。 但是隨著時間推移,這個類已

MySQLOracle---日期對比Oracle

數據庫 alt to_date pan 技術分享 時間日期 軟件 floor lte Oracle: 1.獲取當前日期的年,月,日,時,分,秒 select to_char(sysdate,‘yyyy‘) as nowYear from dual; //獲取時間

讀書筆記《深入理解Java虛擬機器》 物件已死?記憶體分配策略

物件是否可回收 引用計數演算法 給物件新增一個引用計數器,每當有一個地方引用它時,計數器值就加1;當引用失效時就減1;當等於0時就認為物件不可能再被使用。問題:當兩個物件相互引用時,就無法回收了。 可達性分析演算法 通過一系列的稱為“GC Roots”的物件作為起

Java執行併發

Condition等待和喚醒 在我們的並行程式中,避免不了某些寫成要預先規定好的順序執行,例如:先新增後修改,先買後賣,先進後出,對於這些場景,使用JUC的Conditon物件再合適不過了。 JUC中提供了Condition物件,用於讓指定執行緒等待與喚

Java高階視訊_IO輸入輸出

四、File類 01、概述 (1)    用來將檔案或者資料夾封裝成物件 (2)    方便對檔案與資料夾進行操作 (3)    File物件可以作為引數傳遞給流的建構函式 02、File類的常見方法 (1)建立。 — Boolean createNweFile();在指定

java面向對象理論

ont def 三種 類的繼承 設置 一定的 命名 類型 以及 面向對象的基本特性 封裝   封裝性就是盡可能的隱藏對象內部細節,對外形成一道邊界,只保留有限的接口和方法與外界進行交互。封裝的原則是使對象以外的部分不能隨意的訪問和操作對象的內部屬性,從而避免了外界對對象內部

java高級工程師

基礎 自信心 分布式緩存 基於 nlog 知識點 個人理解 數據 有時 一、獨白 之前也面試別人,現在輪到自己找工作,怎麽說呢,每個面試官的看法不一樣,面試的方式就不一樣,比如我面試別人我喜歡問項目中他用到了那些,然後針對用到的技術去問一些問題,或者說對於某些場景

JAVA線程同步 信號量

ole 給定 如何 package 分配 exec 大量 復制代碼 離開 一個信號量有且僅有3種操作,且它們全部是原子的:初始化、增加和減少 增加可以為一個進程解除阻塞; 減少可以讓一個進程進入阻塞。 信號量維護一個許可集,若有必要,會在獲得許可之前阻塞每一個線程:

使用Eclipse + Maven 構建Java Web 項目

項目打包 img app ima jet col tty class con 使用Jetty Maven 插件和Tomcat Maven 插件 1. Jetty Maven 插件 pom配置如下 <build> <finalName>we

java並發基礎

線程生命周期 over out 處理請求 生命 inter 方式 希望 stat 第6章開始是第二部分,講解結構化並發應用程序,大多數並發應用程序都是圍繞“任務執行”構造的,任務通常是一些抽象的且離散的工作單元。 一、線程池 大多數服務器應用程序都提供了一種自然的任務邊界:

WPF入門教程系列八——布局之GridUniformGrid

input 接下來 toolbar wid ids 全部 ica tar 生成 五. Grid Grid顧名思義就是“網格”,它的子控件被放在一個一個實現定義好的小格子裏面,整齊配列。 Grid和其他各個Panel比較起來,功能最多也最為復雜。要使用Grid,首先要向Row

Java多線程SimpleDateFormat

spa bsp sdf java多線程 ext add println turn static 多線程報錯:java.lang.NumberFormatException: multiple points SimpleDateFormat是非線程安全的,在多線程情況下會有

java編程基礎流程控制語句

數據類型 char 格式 條件 -i es2017 else語句 運算 編程 流程控制語句 1.順序語句: 語句:使用分號分隔的代碼成為一條語句。 註意:沒有代碼,只有一個分號也是一條語句。 順序語句就是按照從上到下的順序依次執行的語句 2. if判斷語句 if語句

SQL註入漏洞的分析利用

和數 form 打開 用戶 data 用戶名 text 必須 存儲 MySQL數據庫: 元數據庫information_schema1.在5.0以後版本的MySQL中存在著一個元數據庫information_schema,其中存儲著用戶在MySQL中創建的所有其他數據庫的信

深入理解Java內存模型——順序一致性

內存空間 寫入 方便 語言 body 一半 同步 java語言 post 本文轉自:http://www.infoq.com/cn/articles/java-memory-model-3 數據競爭與順序一致性保證 當程序未正確同步時,就會存在數據競爭。java內存模型規範

Redis 設計實現

check 就會 鍵值 鍵值對 是否 second 變化 write 次數 RDB 持久化  一、生成RDB   cmd:SAVE --阻塞進程,執行完,才能有效接收客戶端命令。   cmd: BGSAVE --非阻塞,開啟子進程保存。           客

Kotlin學習實踐 fun 函數

意義 element 中間 類的方法 int prefix cal save tor 通過例子來學習如何高效的在Kotlin中定義使用函數。 1、命名參數、默認參數、頂層函數、擴展函數 * 展示幾種創建集合類的方法和擴展的簡單操作集合類的方法 fun createColl

java 基礎歸納總結

indexof set方法 返回值 substr 成員變量 bstr con 子類 數組 一、面向對象    面向對象的三大特征:   1、封裝:將類的屬性私有化 並對外提供公共的 getset方法   2、繼承:用新類繼承已有類 可以直接使用 已有類的公共的方法和屬性