मैंने पाया है कि सबसे तेज़ तरीका ऐरे का उपयोग करता है। कॉपी आकार के साथ प्रत्येक बार लूप के माध्यम से दोगुनी हो जाती है। गति मूल रूप से वही होती है चाहे आप भरें एक मान या मूल्यों की सरणी वाला सरणी।
20,000,000 सरणी वस्तुओं के साथ मेरे परीक्षण में, यह फ़ंक्शन लूप के रूप में दोगुना तेज़ है।
using System;
namespace Extensions
{
public static class ArrayExtensions
{
public static void Fill<T>(this T[] destinationArray, params T[] value)
{
if (destinationArray == null)
{
throw new ArgumentNullException("destinationArray");
}
if (value.Length >= destinationArray.Length)
{
throw new ArgumentException("Length of value array must be less than length of destination");
}
// set the initial array value
Array.Copy(value, destinationArray, value.Length);
int arrayToFillHalfLength = destinationArray.Length/2;
int copyLength;
for(copyLength = value.Length; copyLength < arrayToFillHalfLength; copyLength <<= 1)
{
Array.Copy(destinationArray, 0, destinationArray, copyLength, copyLength);
}
Array.Copy(destinationArray, 0, destinationArray, copyLength, destinationArray.Length - copyLength);
}
}
}
मैं http://coding.grax.com/2011/11/initialize-array-to-value-in-c-very.html पर इस बारे में भी ब्लॉग और http://coding.grax.com/2014/04/better-array-fill-function.html
अलग-अलग तरीके के एक जोड़े, इस आदमी को बाहर अधिक आम लोगों के कुछ सूचीबद्ध किया है कर रहे हैं - और वह इसे बेंचमार्क भी तरह पर्याप्त था: http://www.dotnetperls.com/initialize-array स्मृति में 200K आइटम होल्डिंग, भले ही वे प्राइमेटिव हैं, मेमोरी का एक बड़ा हिस्सा खाने जा रहा है - आप क्या कर रहे हैं कि आपको निरंतर 200K आइटम उपलब्ध हैं समय का उपयोग (प्रति आइटम)? – debracey
एक डुप्लिकेट प्रश्न नहीं हो सकता है, उसने यह नहीं कहा था कि वह इसके साथ सरणी को इंटिलाइज़ करना चाहता था, जैसा कि वीलेयू – user613326