Quicksort gibi sıralamak için sıralı bir program uyguluyorum. Programımın performansını büyük bir 1 veya 10 milyar tam sayı aralığında test etmek istiyorum. Ancak sorun, dizinin boyutundan dolayı bölümleme hatası almamdır. Bu dizinin beyanınınC dilinde 1 milyar tamsayı büyük aralıklarla nasıl bildirilir ve kullanılır?
Bir örnek kod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000000
int main(int argc, char **argv)
{
int list[N], i;
srand(time(NULL));
for(i=0; i<N; i++)
list[i] = rand()%1000;
return 0;
}
Ben mmap işlevini kullanmak için bir önerim var. Ama nasıl kullanacağımı bilmiyorum? Kullanmama yardım eden var mı?
Ubuntu 10.04 64-bit, gcc sürüm 4.4.3 üzerinde çalışıyorum.
Yanıtlarınız için teşekkür ederiz.
Bilgisayarınızda ne kadar fiziksel bellek var? – BlueCode
@BlueCode: Muhtemelen önemli değil; önemli olan sanal bellek; Bir işlemin adres alanındaki tüm ayrılmış belleklerin RAM tarafından hemen yedeklenmesi gerekmez. –
yığın yerine yığın üzerine koyarak deneyin. Onun maksimum yığın boyutu Dikkatli çok başarısız olabilir, bazı derleyiciler maksimum bitişik aynasına bir sınırlama ekleyin 'Malloc (N * sizeof (int))' o olabilir olmak zorunda – pm100