Satu masalah dengan solusi loop for di atas adalah untuk array input berikut dengan semua nilai positif, hasil penjumlahannya negatif:
int[] arr = new int[] { Int32.MaxValue, 1 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Console.WriteLine(sum);
Jumlahnya adalah -2147483648, karena hasil positif terlalu besar untuk tipe data int dan meluap ke nilai negatif.
Untuk larik input yang sama, saran arr.Sum () menyebabkan pengecualian overflow dilemparkan.
Solusi yang lebih tepat adalah dengan menggunakan tipe data yang lebih besar, seperti "long" dalam kasus ini, untuk "sum" sebagai berikut:
int[] arr = new int[] { Int32.MaxValue, 1 };
long sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
Perbaikan yang sama berfungsi untuk penjumlahan tipe data integer lainnya, seperti short, dan sbyte. Untuk array tipe data integer unsigned seperti uint, ushort dan byte, menggunakan unsigned long (ulong) untuk jumlah tersebut menghindari pengecualian overflow.
Solusi for loop juga beberapa kali lebih cepat dari Linq .Sum ()
Untuk berjalan lebih cepat, paket nuget HPCsharp mengimplementasikan semua versi .Sum () serta versi SIMD / SSE dan paralel multi-core, untuk kinerja yang berkali-kali lebih cepat.