Is there a best(see below) way to append two byte arrays in C#?
Pretending I have complete control, I can make the first byte array sufficiently large to hold the second byte array at the end and use the Array.CopyTo function. Or I can loop over individual bytes and make an assignment.
Are there better ways? I can't imagine doing something like converting the byte arrays to string and joining them and converting them back would be better than either method above.
In terms of best/better (in order):
1) Fastest
2) Least RAM consumption
Edit : A constraint is that I must work in the 2.0 framework .
Edit2 : The two choices recommended are MemoryStream and BlockCopy. I have run a simple speed test of 10,000,000 loops 3 times, and got the following results:
Average of 3 runs of 10,000,000 loops in milliseconds:
BlockCopy Time: 1154, with a range of 13 milliseconds
MemoryStream GetBuffer Time: 1470, with a range of 14 milliseconds
MemoryStream ToArray Time: 1895, with a range of 3 milliseconds
CopyTo Time: 2079, with a range of 19 milliseconds
Byte-by-byte Time: 2203, with a range of 10 milliseconds
Edit3 : Added results of List AddRange over 10 million loops:
List Time: 16694
Edit 4: Relative RAM Consumption (1 is baseline, higher is worse):
Byte-by-byte: 1
BlockCopy: 1
Copy To: 1
MemoryStream GetBuffer: 2.3
MemoryStream ToArray: 3.3
List: 4.2
The test shows that in general, unless you are doing a lot of byte copies [which I am], looking at byte copies is not worth a focus [e.g. 10 million runs yielding a difference of as much as 1.1 seconds].