数十K〜数MByte分のbyte配列をsbyte配列に変換、またはその逆にするのに、
byte[] data;   //元のデータ
sbyte[] sdata = new sbyte[data.Length];   //変換後のデータ
for (int i = 0; i < data.Length; i++)
{
    sdata[i] = (sbyte)data[i];
}

といったように素直にキャストしていくのと、

[StructLayout(LayoutKind.Explicit)]
public struct ChangeArray
{
    [FieldOffset(0)]
    public byte[] Data;
    [FieldOffset(0)]
    public sbyte[] SData;
}
…
    byte[] data;   //元のデータ
    sbyte[] sdata = new sbyte[data.Length];   //変換後のデータ
    ChangeArray ca = new ChangeArray();
    ca.Data = data;
    sdata = ca.SData;

という風に変換するのとでは、どちらが速いでしょうか?