işlemcinin saniye başına hesapladığı komut sayısı

entry1 galeri0
    1.
  1. basit bir c programıyla bile öğrenilebilir!

    kratertepesi@msi:~/Masaüstü/Programlar$ ./program
    100 milyon sayı içinde 10030385 asal sayı vardır.
    işlemci döngüsü: 4772581176
    Hesaplama süresi: 1.0846775400 saniye
    1 saniyenin 10,000'de kaçı: 10846.7754000000

    kod:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <x86intrin.h> // RDTSC için gerekli

    #define LIMIT 180000000 // 1 milyar sınırı
    #define CPU_FREQUENCY 4.4 // GHz cinsinden işlemci frekansı (örneğin 3.0 GHz)

    int main() {
    unsigned long long i, j, count = 0;
    bool *is_prime = malloc((LIMIT + 1) * sizeof(bool));
    if (is_prime == NULL) {
    fprintf(stderr, "Bellek tahsis edilemedi.\n");
    return 1;
    }

    // Zaman ölçüm başlangıcı
    unsigned long long start = __rdtsc();

    // Bütün sayıları asal varsayıyoruz
    for (i = 0; i <= LIMIT; i++) {
    is_prime[i] = true;
    }

    // 0 ve 1 asal değildir
    is_prime[0] = is_prime[1] = false;

    // Eratosthenes Eleği algoritması
    for (i = 2; i * i <= LIMIT; i++) {
    if (is_prime[i]) {
    for (j = i * i; j <= LIMIT; j += i) {
    is_prime[j] = false;
    }
    }
    }

    // Asal sayıları sayıyoruz
    for (i = 2; i <= LIMIT; i++) {
    if (is_prime[i]) {
    count++;
    }
    }

    // Zaman ölçüm bitişi
    unsigned long long end = __rdtsc();

    // Döngü farkını hesapla
    unsigned long long cycles = end - start;

    // Döngü süresi saniye olarak
    double time_seconds = cycles / (CPU_FREQUENCY * 1e9); // GHz'den Hz'e dönüşüm

    // Sonuçları yazdır
    printf("100 milyon sayı içinde %llu asal sayı vardır.\n", count);
    printf("işlemci döngüsü: %llu\n", cycles);
    printf("Hesaplama süresi: %.10f saniye\n", time_seconds);
    printf("1 saniyenin 10,000'de kaçı: %.10f\n", time_seconds * 10000);

    // Belleği serbest bırak
    free(is_prime);

    return 0;
    }
    1 ...
© 2025 uludağ sözlük