bugün

insan ömrünü 1 saniyeye sığdıran makina

meğerse bu da güncel hızı sunmayan bir programmış! çoklu iş parçacığıyla 1 saniyede 1 den 50 milyara kadar olan tüm sayıları artışık biçimde saydırdım! 50 tane adam öldü gitti yani! en iyi ihtimali varsayıp 25 diyelim! çift threadde, tek çekirdekte 10 milyar!

görsel

buyrun kaynak kod:
#include <stdio.h>
#include <pthread.h>
#include <sys/time.h>

#define MAX_COUNT 50000000000LL // long long int türü için LL ekledik
#define THREAD_COUNT 24 // 24 çekirdek için iş parçacığı sayısı

// işlem yapılacak fonksiyon
void* count_numbers(void* arg) {
long long start = *((long long*)arg);
long long end = start + (MAX_COUNT / THREAD_COUNT);

for (long long i = start; i < end; i++) {
// Her sayıyı yazdırmıyoruz çünkü çok büyük veri olur, ancak isterseniz yazdırabilirsiniz
// printf("%lld\n", i);
}

return NULL;
}

int main() {
struct timeval start_time, end_time;
double elapsed_time;

pthread_t threads[THREAD_COUNT];
long long start_values[THREAD_COUNT];

// Başlangıç zamanını al
gettimeofday(&start_time, NULL);

// iş parçacıklarını başlat
for (int i = 0; i < THREAD_COUNT; i++) {
start_values[i] = (MAX_COUNT / THREAD_COUNT) * i; // Her iş parçacığına başlangıç noktası
pthread_create(&threads[i], NULL, count_numbers, (void*)&start_values[i]);
}

// iş parçacıklarının bitmesini bekle
for (int i = 0; i < THREAD_COUNT; i++) {
pthread_join(threads[i], NULL);
}

// Bitiş zamanını al
gettimeofday(&end_time, NULL);

// Geçen süreyi hesapla
elapsed_time = (end_time.tv_sec - start_time.tv_sec) + (end_time.tv_usec - start_time.tv_usec) / 1000000.0;

// Sonucu yazdır
printf("1'den %lld'ye kadar sayma işlemi %.6f saniye sürdü.\n", MAX_COUNT, elapsed_time);

return 0;
}
Gündemdeki Haberler
güncel Önemli Başlıklar