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

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

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

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

Qyouu 2022-11-02 17:21:28
我正在開發(fā)一個小型游戲項(xiàng)目,并希望跟蹤時間以處理物理。在瀏覽了不同的方法之后,起初我決定使用 JavaInstant和Duration類,現(xiàn)在切換到 Guava 的Stopwatch實(shí)現(xiàn),但是,在我的代碼片段中,這兩種方法在第二次調(diào)用runtime.elapsed(). 從長遠(yuǎn)來看,這似乎不是一個大問題,但為什么會發(fā)生這種情況呢?我嘗試在 Windows 和 Linux(Ubuntu 18.04)中以焦點(diǎn)和線程的形式運(yùn)行下面的代碼,結(jié)果保持不變 - 確切的值不同,但出現(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);}標(biāo)準(zhǔn)輸出:30700180700018089001811600181240018133001830200183320018345001835500謝謝你的幫助。
查看完整描述

1 回答

?
POPMUISE

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

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

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

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

編輯:在這種情況下,這并不能解釋你所看到的,因?yàn)榭雌饋碚诖蛴〉募{米偏移量可能都在同一秒內(nèi),但你仍然不應(yīng)該使用getNano().

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


查看完整回答
反對 回復(fù) 2022-11-02
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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