第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么特定 Guava Stopwatch.elapsed() 調(diào)用比其他調(diào)用晚得多?

為什么特定 Guava Stopwatch.elapsed() 調(diào)用比其他調(diào)用晚得多?

Qyouu 2022-11-02 17:21:28
我正在開發(fā)一個小型游戲項目,并希望跟蹤時間以處理物理。在瀏覽了不同的方法之后,起初我決定使用 JavaInstant和Duration類,現(xiàn)在切換到 Guava 的Stopwatch實現(xiàn),但是,在我的代碼片段中,這兩種方法在第二次調(diào)用runtime.elapsed(). 從長遠來看,這似乎不是一個大問題,但為什么會發(fā)生這種情況呢?我嘗試在 Windows 和 Linux(Ubuntu 18.04)中以焦點和線程的形式運行下面的代碼,結果保持不變 - 確切的值不同,但出現(xiàn)了差距。我正在使用帶有 JDK 11 的 IntelliJ IDEA 環(huán)境。主要片段:public static void main(String[] args) {    MassObject[] planets = {        new Spaceship(10, 0, 6378000)    };    planets[0].run();}這是我的課的一部分MassObject extends Thread:public void run() {    // I am using StringBuilder to eliminate flushing delays.    StringBuilder output = new StringBuilder();    Stopwatch runtime = Stopwatch.createStarted();    // massObjectList = static List<MassObject>;    for (MassObject b : massObjectList) {        if(b!=this) calculateGravity(this, b);    }    for (int i = 0; i < 10; i++) {        output.append(runtime.elapsed().getNano()).append("\n");    }    System.out.println(output);}標準輸出:30700180700018089001811600181240018133001830200183320018345001835500謝謝你的幫助。
查看完整描述

1 回答

?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

您正在調(diào)用返回的 by Duration.getNano(),這不是您想要的。Durationelapsed()

a 的內(nèi)部表示Duration秒數(shù)加上持續(xù)時間中任何額外的整秒分數(shù)的納米偏移量。Duration.getNano()返回該納米偏移量,除非您還調(diào)用Duration.getSeconds().

您可能想要調(diào)用的方法是toNanos(),它將整個持續(xù)時間轉換為納秒數(shù)。

編輯:在這種情況下,這并不能解釋你所看到的,因為看起來正在打印的納米偏移量可能都在同一秒內(nèi),但你仍然不應該使用getNano().

實際問題可能是在第一次調(diào)用期間必須發(fā)生的類加載或額外工作的某種組合,和/或 JIT 提高未來調(diào)用的性能(盡管我認為循環(huán) 10 次不一定足以讓你看到很多JIT 的任何變化)。


查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號