टी एल; डॉ
इसकी गति के बारे में सामंजस्य तेज और अधिक सुसंगत है। लेकिन अंतर 1 या 2 चर (100 मिलियन कॉल के लिए .3 सेकंड से कम) के लिए बहुत कम है।
संपादित करें
दूसरे रन के बाद ऐसा लगता है कि कॉन्सेप्टेशन ज्यादातर दोनों का तेज है।
इसलिए, मैं एक परीक्षण प्रदान करके एनालॉग-निको के उत्तर का विस्तार करना चाहता था जो कि अधिक व्यापक था और दोनों कार्यों की मापनीयता में भी (थोड़ा) देखा गया था।
पास्टबिन पर कोड
मैंने प्रत्येक फ़ंक्शन के लिए चार परीक्षण मामलों का उपयोग करने का निर्णय लिया, जिसमें एक चर सामने, एक अंत में, एक मध्य में और दो चर मध्य में था। मूल सेटअप समान है। मैं केवल फ़ंक्शन के 100,000,000 पुनरावृत्तियों का उपयोग कर रहा हूं और ये पुनरावृत्तियों को 100 बार चलाया जाता है। मैंने अनुकूलन को रोकने के लिए समान तंत्र का उपयोग किया, अर्थात् परिणामी तारों की लंबाई का योग प्राप्त करना और इसे लॉग करना। मैंने जरूरत के समय को भी लॉग किया (यह अनुमान लगाने के लिए कि मुझे कितना समय लगेगा) लेकिन इसे एक सरणी में भी सहेजा।
बाद में, मैंने प्रत्येक विधि के लिए औसत, न्यूनतम, अधिकतम और मानक विचलन की गणना की।
यहाँ परिणाम हैं:
{
sum: {
t: {
start: 2072751,
mid: 2338476,
end: 2083695,
double: 2950287
},
c: {
start: 2086059,
mid: 2345551,
end: 2074732,
double: 2922929
}
},
avg: {
t: {
start: 20727.51,
mid: 23384.76,
end: 20836.95,
double: 29502.87
},
c: {
start: 20860.59,
mid: 23455.51,
end: 20747.32,
double: 29229.29
}
},
sd: {
t: {
start: 335.6251329981114,
mid: 282.9490809315344,
end: 286.2220947096852,
double: 216.40844045461824
},
c: {
start: 255.4803356424913,
mid: 221.48744862858484,
end: 238.98242111084238,
double: 209.9309074433776
}
},
min: {
t: {
start: 20490,
mid: 23216,
end: 20588,
double: 29271
},
c: {
start: 20660,
mid: 23258,
end: 20534,
double: 28985
}
},
max: {
t: {
start: 23279,
mid: 25616,
end: 22887,
double: 30843
},
c: {
start: 22603,
mid: 25062,
end: 22403,
double: 30536
}
}
}
t
-objects में मान टेम्प्लेट के लिए हैं, c
-objects में मान कॉनटेनेंस के लिए हैं। start
इसका मतलब है कि चर शुरुआत में है, मध्य है कि यह मध्य में है, अंत यह है कि यह अंत में है और दोगुना है कि दो चर हैं। sum
सभी 100 रन का योग है। avg
औसत रन है, जिसका अर्थ है sum / 100
। sd
यहाँ आसान तरीका है, विकिपीडिया (सरल अंग्रेजी) । min
और max
एक रन का न्यूनतम और अधिकतम मूल्य क्रमशः है।
परिणाम
ऐसा लगता है कि एकल चर के लिए टेम्प्लेट तेज़ होते हैं जो स्ट्रिंग के अंत में स्थित नहीं होते हैं, यह देखते हुए कि औसत कम है और न्यूनतम कम है। यदि आप एक स्ट्रिंग के अंत में एक चर डालते हैं या आपके स्ट्रिंग में कई चर होते हैं, तो संघनन तेज होता है।
यद्यपि न्यूनतम और साथ ही टेम्पलेट्स के औसत पहले दो स्थितियों के संबंध में उनके संगति समकक्षों से बेहतर है, मानक विचलन लगातार बदतर है। अंतर अधिक चर (अधिक परीक्षण की आवश्यकता) के साथ हटना लगता है।
चूँकि अधिकांश टेम्प्लेट्स का उपयोग शायद एक स्ट्रिंग में केवल एक चर के लिए नहीं किया जाएगा, इसलिए यह कहना बच जाता है कि कंफर्टेशन के लिए चिपके रहने से बेहतर प्रदर्शन मिलता है। लेकिन अंतर बहुत कम है (अभी के लिए कम से कम)। दो चर के साथ 100,000,000 (100 मिलियन) मूल्यांकन में, अंतर केवल 273,58 एमएस है, एक चौथाई सेकंड के बारे में ...
दूसरा रन
दूसरा रन कुछ अलग दिखता है। अधिकतम मान को छोड़कर, औसत निरपेक्ष विचलन और मानक विचलन, प्रत्येक माप ने इस बात का प्रमाण दिया कि संघनन टेम्पलेट्स की तुलना में अधिक तेज़ है।
तीन उल्लिखित मापों में टेम्पलेट्स के लिए कम (इस प्रकार बेहतर) मूल्य थे जब चर स्ट्रिंग के अंत में था या जब स्ट्रिंग में दो चर थे।
यहाँ परिणाम हैं:
{
"sum": {
"t": {
"start": 1785103,
"mid": 1826679,
"end": 1719594,
"double": 2110823,
"many": 4153368
},
"c": {
"start": 1720260,
"mid": 1799579,
"end": 1716883,
"double": 2097473,
"many": 3836265
}
},
"avg": {
"t": {
"start": 17851.03,
"mid": 18266.79,
"end": 17195.94,
"double": 21108.23,
"many": 41533.68
},
"c": {
"start": 17202.6,
"mid": 17995.79,
"end": 17168.83,
"double": 20974.73,
"many": 38362.65
}
},
"sd": {
"t": {
"start": 858.7857061572462,
"mid": 886.0941856823124,
"end": 786.5366719994689,
"double": 905.5376950188214,
"many": 1744.9005638144542
},
"c": {
"start": 599.0468429096342,
"mid": 719.1084521127534,
"end": 935.9367719563112,
"double": 991.5642274204934,
"many": 1465.1116774840066
}
},
"aad": {
"t": {
"start": 579.1207999999996,
"mid": 576.5628000000003,
"end": 526.8268,
"double": 586.9651999999998,
"many": 1135.9432000000002
},
"c": {
"start": 467.96399999999966,
"mid": 443.09220000000016,
"end": 551.1318000000008,
"double": 610.2321999999999,
"many": 1020.1310000000003
}
},
"min": {
"t": {
"start": 16932,
"mid": 17238,
"end": 16387,
"double": 20016,
"many": 39327
},
"c": {
"start": 16477,
"mid": 17137,
"end": 16226,
"double": 19863,
"many": 36424
}
},
"max": {
"t": {
"start": 23310,
"mid": 24102,
"end": 21258,
"double": 26883,
"many": 49103
},
"c": {
"start": 19328,
"mid": 23203,
"end": 22859,
"double": 26875,
"many": 44352
}
},
"median": {
"t": {
"start": 17571,
"mid": 18062,
"end": 16974,
"double": 20874,
"many": 41171.5
},
"c": {
"start": 16893.5,
"mid": 18213,
"end": 17016.5,
"double": 20771,
"many": 38849
}
}
}
कोड यहाँ है