2012-08-07 11 views
5

जावास्क्रिप्ट में में दिनांक/समय निर्माण का अनुकूलन नहीं करते, हम एक नंबर आज की तारीख/इसलिए की तरह समय का प्रतिनिधित्व प्राप्त कर सकते हैं हो सकता है:क्यों गूगल अपने सामने के पेज जावास्क्रिप्ट

var f = (new Date()).getTime(); 

ऐसा करने का सबसे कॉम्पैक्ट तरह से निम्नलिखित कोड में परिलक्षित होता है:

var g = +new Date; //11 bytes shorter 

(उन्हें यहां देखें: http://jsfiddle.net/es4XW/2/)

अब जब आप Google के फ्रंट पेज के स्रोत कोड से खोज करते हैं, तो आपको दूसरा बार 11 बार इस्तेमाल किया जाएगा। इसलिए, ऐसा लगता है कि प्रत्येक अवसर पर Google कुल 11 बाइट्स - 121 बाइट्स बचा सकता है।

संपीड़न और कैशिंग इसे कम करने में एक भूमिका निभाएंगे, लेकिन निश्चित रूप से Google के लिए यह आसान स्विच करना उचित होगा।

अमेज़ॅन के फ्रंट पेज कोड के साथ इसकी तुलना करें और इसके विपरीत, जो तीसरे सम्मेलन का उपयोग करते हैं (हालांकि हर अवसर पर नहीं)।

तो Google इस अनुकूलन में रुचि क्यों नहीं रखते हैं? हालांकि 121 बाइट्स हम में से अधिकांश के लिए मूंगफली हैं, लेकिन मैंने सोचा होगा कि वे अपने सामने वाले पृष्ठ से प्रदर्शन के हर अंतिम बिट को निचोड़ने में रुचि रखते थे।

+0

नज़दीकी वोट के संबंध में। क्या स्पष्ट नहीं है? मुझे 0 स्पॉटिफिकेशन –

+0

वोट देने के लिए संपादित करने में खुशी हुई क्योंकि मुझे लगता है कि क्यों * Google * (या कोई भी) कुछ फिट नहीं करता है ... एक उचित सवाल यह होगा: "लंबे वाक्यविन्यास के क्या फायदे हैं"? –

+0

नोट: 'document.getElementById' अकेले 30 बार दिखाई देता है, और बहुत अधिक डोम फ़ंक्शंस हैं, इन्हें छोटा करके ~ 500-1000 बाइट्स को सहेजना आसान होगा। –

उत्तर

4

मैं पठनीयता और इस प्रकार मामूली बाइट बचत पर रखरखाव कहूंगा। इसके अलावा, पहले 2 विकल्प भविष्य के सबूत हैं, जबकि तीसरा विकल्प एक कार्यान्वयन विवरण है जो बदल सकता है या इंजनों (जैसे राइनो, नोड) में अलग-अलग काम करता है।

अपने उदाहरण के लिए एक 4 संभावना एक समारोह में कॉल रैप करने के लिए होगा:

var now = function() { 
    return (new Date().getTime()); 
} 

बेशक यह केवल कुछ बाइट्स की बचत होती है एक बार आप इसे कम से कम कुछ समय कहते हैं।

+0

तीसरा विकल्प कार्यान्वयन-विशिष्ट किस तरह से है? मैंने सोचा होगा कि किसी दिनांक पर डेटटाइम कास्टिंग करते समय व्यवहार ईसीएमएस्क्रिप्ट द्वारा निर्दिष्ट किया जाएगा। यह कहकर, मैंने नहीं देखा है ... :) –

+0

मैंने कहा कि यह 'बदला जा सकता है' और वर्तमान कार्यान्वयन के लिए विशिष्ट है जो संदर्भ के आधार पर सबकुछ स्वचालित रूप से रखता है। यह स्पष्ट रूप से सभी जेएस पार्सर्स में काम करता है, लेकिन कुछ अनुकूलन के कारण कौन कहता है कि दृढ़ता से टाइप किया गया पार्सर इसे अलग-अलग संभाल नहीं पाएगा। लेकिन सही, मैं उस पर और अधिक स्पष्ट हो सकता था। :) –

+0

ऐसा नहीं लगता है कि वे अंतिम उपयोगकर्ता ग्राहकों को बनाए रखने योग्य कोड प्रदान करने के बारे में बहुत अधिक परवाह करेंगे। लेकिन चौथी संभावना वास्तव में लागू की गई है: 'google.time() ' – Robert

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