प्रदर्शन - Date.now () बनाम Date.getTime ()


113
var timeInMs = Date.now();

प्रति एमडीएन

बनाम

var timeInMs = new Date(optional).getTime();

प्रति एमडीएन

क्या दूसरे संस्करण में वैकल्पिक के माध्यम से सिंटैक्स और दिनांक निर्धारित करने की क्षमता (वर्तमान नहीं) के अलावा दोनों के बीच कोई अंतर है?

Date.now () तेज है - jsperf देखें


54
परवाह करने वाले किसी भी व्यक्ति के लिए, Date.now () IE9 से पहले इंटरनेट एक्सप्लोरर संस्करणों में काम नहीं करता है। मैं खुद परवाह नहीं करता
गाइड

8
इसके लायक होने के लिए, आप IE.m 9 पर Date.now () काम करने के लिए , डेवलपर. mozilla.org/en-US/docs/JavaScript/Reference/… में उल्लिखित संगतता शिम जोड़ सकते हैं ।
जाजव

जवाबों:


105

ये चीजें समान हैं ( शब्दार्थ संपादित करें ; प्रदर्शन थोड़ा बेहतर है .now()):

var t1 = Date.now();
var t2 = new Date().getTime();

हालाँकि, Dateइसके निर्माण के समय (या जो भी समय / तिथि इसे निर्धारित की गई है) इसके निर्माण के समय किसी भी पहले से निर्मित उदाहरण से समय मान जम गया है। यही है, यदि आप ऐसा करते हैं:

var now = new Date();

और फिर थोड़ी देर प्रतीक्षा करें now.getTime(), चर के सेट होने के समय को बताने के लिए एक बाद की कॉल ।


क्या आपको लगता है कि कार्यक्रम के आरंभ में एक तिथि ऑब्जेक्ट बनाना अधिक उपयुक्त होगा और फिर उस दिनांक ऑब्जेक्ट ( dateObj.setTime(Date.now())) को अपडेट करें या हर बार जब आप कुछ अतुल्यकालिक करते हैं जो कि एक्सेस Dateविधियों (जैसे dateObj.getMinutes()) की आवश्यकता होती है?
डबलऑर्ट

3
@ वृषभ आधुनिक जावास्क्रिप्ट रनटाइम ऑब्जेक्ट निर्माण और कचरा संग्रह में बहुत अच्छे हैं । जब तक आप वास्तविक समय के खेल कर्नेल के कुछ प्रकार पर काम कर रहे हैं, तब तक इसके बारे में चिंता करने का कोई कारण नहीं है। ऐसा कोड लिखें जो अच्छा लगे और जो नाजुक न हो।
पॉइन्टी

1
धन्यवाद कहने के लिए नहीं, धन्यवाद (मुझे आशा है कि मैंने इसे एक बार से अधिक नहीं किया है)।
डबलऑर्ट

57

वे प्रभावी रूप से समकक्ष हैं, लेकिन आपको उपयोग करना चाहिए Date.now()। यह स्पष्ट है और लगभग दोगुना है।

संपादित करें: स्रोत: http://jsperf.com/date-now-vs-new-date


1
क्या ऐसा इसलिए Date(optional).getTime();है क्योंकि वर्तमान समय प्राप्त करने से पहले एक नई दिनांक ऑब्जेक्ट प्राप्त करने के लिए स्थान आवंटित करना है?
चार्ली जी

शायद हाँ। मुझे उम्मीद है कि यह सब कुछ के साथ और अधिक करने के लिए है कि दिनांक निर्माणकर्ता वस्तु के वास्तविक आवंटन के बजाय कर रहा है, हालांकि।
जाजव

हाँ, मैंने कहा कि hasily - मैं आवंटन और सब कुछ है कि एक वस्तु बनाने के साथ जाता है मतलब है।
चार्ली जी

4

जब आप करते हैं तो (new Date()).getTime()आप एक नया दिनांक ऑब्जेक्ट बना रहे हैं। यदि आप इसे बार-बार करते हैं, तो यह Date.now () की तुलना में 2x धीमा होगा।

एक ही सिद्धांत Array.prototype.slice.call(arguments, 0)बनाम के लिए आवेदन करना चाहिए[].slice.call(arguments, 0)


3

हां यह सही है; वर्तमान समय का उपयोग करते समय वे प्रभावी रूप से समतुल्य हैं।


2

कभी-कभी केवल कुछ मिलिसेकंड के बजाय किसी दिनांक ऑब्जेक्ट प्रारूप में कुछ समय ट्रैकिंग चर रखने के लिए बेहतर होता है, ताकि री-इंस्टेंटिंग के बिना तिथि के तरीकों तक पहुंच हो। उस स्थिति में, Date.now () अभी भी नई तिथि (या जैसे) पर जीतता है, हालांकि मेरे क्रोम पर लगभग 20% और IE पर एक छोटी राशि से।

मेरे JSPERF को देखें

timeStamp2.setTime(Date.now()); // set to current;

बनाम

timeStamp1 = new Date(); // set to current;

http://jsperf.com/new-date-vs-settime

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.