2013-06-08 4 views
8

मैं एक समारोह में कई कॉलों से एक छोटे से प्रदर्शन लाभ को निचोड़ने की उम्मीद कर रहा था जो टाइमस्टैंप देता है। समारोह इस तरह दिखता है:System.currentTimeMillis() और डेट getTime() के बीच अंतर?

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(); 
} 

आंतरिक System.currentTimeMillis का उपयोग करता है()। मेरा सवाल यह है कि डेलाइट सेविंग टाइम या टाइम जोन कभी भी इन दो दृष्टिकोणों के परिणामस्वरूप एक अंतर पैदा कर सकता है या नहीं। मुझे कल्पना है कि यह कैलेंडर ऑब्जेक्ट्स के साथ आ सकता है, लेकिन ऑब्जेक्ट्स डेट नहीं करता है, लेकिन इस पर कुछ स्पष्टीकरण पसंद आएगा।

मुझे पता है कि मुझे वास्तविक दुनिया के अनुप्रयोग में प्रदर्शन में एक सराहनीय अंतर दिखाई नहीं देगा, लेकिन फिर भी इसका जवाब जानना होगा।

धन्यवाद!

उत्तर

9

किसी भी वस्तु को आवंटित करने के कारण बहुत मामूली अंतराल को छोड़कर कोई फर्क नहीं पड़ता।

javadoc से Date के डिफ़ॉल्ट निर्माता:

एक दिनांक वस्तु का आवंटन और यह initializes इतना है कि यह समय, जिस पर यह आवंटित किया गया था, निकटतम मिलीसेकंड को मापा जाता प्रतिनिधित्व करता है।

Date एपोक मिलीसेकंड के आस-पास एक पतली आवरण है, बिना किसी समय की अवधारणा के। केवल स्ट्रिंग में प्रस्तुत होने पर टाइमज़ोन माना जाता है, लेकिन इसे Locale कक्षा द्वारा नियंत्रित किया जाता है।

3

मैं एक यूनिट परीक्षण (उदा। https://gist.github.com/ledlogic/8532028) चलाने का सुझाव दूंगा। मैंने System.currentTimeMillis बनाम (नई तिथि()) को चलाने के लिए केवल थोड़ा सा लाभ देखा। GetTime()।

1 billion runs: (1000 outer loops, 1,000,000 inner loops): 
    System.currentTimeMillis(): 14.353 seconds 
    (new Date()).getTime(): 16.668 seconds 

व्यक्तिगत रन कभी कभी थोड़ा बाद में दृष्टिकोण की ओर पक्षपाती किया जाएगा - आपके सिस्टम गतिविधि के आधार पर।

1

कोई अंतर नहीं, और कैलेंडर.getTimeInMillis() भी वही है। क्योंकि 1 जनवरी 1 9 70, 00:00:00 जीएमटी के बाद वापसी परिणाम मिलीसेकंड की संख्या है। आप एक ही लंबे मूल्य व्हीवर प्राप्त करेंगे जो आप पूरे शब्द पर हैं।

संबंधित मुद्दे