11

タイムスタンプを返す関数への多くの呼び出しからわずかなパフォーマンスの向上を絞り出すことを望んでいました。関数は次のようになります。

public static long get_now_ms(){
    // returns number of MILLISECONDS since epoch
    java.util.Date d = new java.util.Date();
    return d.getTime();
}

これを次のように置き換えることはできますか:

public static long get_now_ms(){
    // returns number of MILLISECONDS since epoch
    return System.currentTimeMillis();
}

Date は内部的に System.currentTimeMillis() を使用していることを知っています。私の質問は、夏時間またはタイムゾーンがこれら 2 つのアプローチの結果に違いをもたらす可能性があるかどうかです。これは Date オブジェクトではなく Calendar オブジェクトで発生する可能性があると思いますが、これについて明確にしたいと思います。

実際のアプリケーションではパフォーマンスに大きな違いが見られない可能性が高いことはわかっていますが、それでも答えを知りたい.

ありがとう!

4

3 に答える 3

12

Date オブジェクトの割り当てによって発生するわずかな遅延を除いて、違いはありません。

javadocからのデフォルトのコンストラクターDate:

Date オブジェクトを割り当てて初期化し、割り当てられた時刻をミリ秒単位で表すようにします。

ADateは、エポックミリ秒の薄いラッパーであり、タイムゾーンの概念はありません。String にレンダリングされた場合にのみタイムゾーンが考慮されますが、それはLocaleクラスによって処理されます。

于 2013-06-08T21:49:27.707 に答える
2

違いはありません。 Calendar.getTimeInMillis() も同じです。返される結果は、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数であるためです。どこにいても同じ長い値が得られます。

于 2014-10-30T03:57:48.423 に答える