I have a large int[] array and a much smaller int[] array. I want to fill up the large array with values from the small array, by repeat copying the small array into the large array until it is full (so that large[0] = large[13] = large[26] ... = small[0] etc.). I already have a simple method:
int iSource = 0;
for (int i = 0; i < destArray.Length; i++)
{
if (iSource >= sourceArray.Length)
{
iSource = 0; // reset if at end of source
}
destArray[i] = sourceArray[iSource++];
}
But I need something more elegant, and hopefully faster.
Interestingly the winning answer is the slowest with the provided source array!
The solution I was going to propose was
for (int i = 0; i < destArray.Length; i++)
{
destArray[i] = sourceArray[i%sourceArray.Length];
}
but when i tested the perf over 100000 iterations using the inputs in the answering question it performed worse than the questioners loop.
here is the output from my little test app
array copy 164ms (Nelson LaQuet's code) assign copy 77ms (MusiGenesis code) assign mod copy 161ms (headsling's code)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With