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!
#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);
pbo enchanced 1 modunu kullandığımda, 10 milyar sayıyı 5.6 ghz de, multithreadle 80 c derecede 10 saniyede yazdırabilirken, bu değer maks 65-70 c dereceyle 8 saniyeye düştü, amd tarafı %15 performans vaat etmiş, fakat performansı zamana vurduğunuzda %20 yi yakalıyoruz. şaka gibi.
boost özelliğini enayi gibi manuel modda kullanıyormuşum da farkında değilmişim ben, aldığım performans düşüşü bu yüzdenmiş, set thermal point 75, 85 gibi envai çeşit mod varmış pbo aktifken!