Tôi hiện đang làm việc trên một ứng dụng chịu trách nhiệm tính toán hoán vị ngẫu nhiên của một mảng răng cưa.Cách cực kỳ nhanh chóng để sao chép các giá trị của một mảng răng cưa vào một mảng thứ hai?
Hiện tại, phần lớn thời gian trong ứng dụng được sử dụng để sao chép mảng trong mỗi lần lặp (tổng số 1 triệu lần lặp). Trên hệ thống hiện tại của tôi, toàn bộ quá trình mất 50 giây để hoàn thành, 39 trong số những giây đó đã nhân bản mảng đó.
mảng My nhân bản thường xuyên như sau:
public static int[][] CopyArray(this int[][] source)
{
int[][] destination = new int[source.Length][];
// For each Row
for (int y = 0; y < source.Length; y++)
{
// Initialize Array
destination[y] = new int[source[y].Length];
// For each Column
for (int x = 0; x < destination[y].Length; x++)
{
destination[y][x] = source[y][x];
}
}
return destination;
}
Có cách nào, an toàn hoặc không an toàn, để đạt được tác dụng tương tự như trên, nhanh hơn nhiều?
Bạn đã cố sử dụng các mảng đa chiều thay vì các mảng có răng cưa, tức là 'static int [,]' thay vì 'static int [] []'? –