История изменений
Исправление soomrack, (текущая версия) :
Через cpupower смотрел?
Вроде как тут и есть намного быстрее, может гипердрейдинг или еще чего то как оптимизация на уровне проца идет. Хотя тут самое долгое это операция взятия остатка. Можно посмотреть, как долго она выполняется на разных процах:
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;
int main()
{
clock_t start, end;
// double result = 0.0;
int result = 0;
start = clock();
for (int k1 = 1; k1 < 10000; k1++) {
for (int k2 = 1; k2 < 100000; k2++) {
// result += (double)k1 / (double)k2;
result += k1 % k2;
}
}
end = clock();
cout << (end - start) / ((double) CLOCKS_PER_SEC);
cout << " sec \n";
cout<<result<<"\n";
return 0;
}
AMD FX9590 4GHz
3.98982 sec
855312446
Для double (раскомментить соотв. строчки)
4.65588 sec
6.04446e+08
Исправление soomrack, :
Через cpupower смотрел?
Вроде как тут и есть намного быстрее, может гипердрейдинг или еще чего то как оптимизация на уровне проца идет. Хотя тут самое долгое это операция взятия остатка. Можно посмотреть, как долго она выполняется на разных процах:
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;
int main()
{
clock_t start, end;
// double result = 0.0;
int result = 0;
start = clock();
for (int k1 = 1; k1 < 10000; k1++) {
for (int k2 = 1; k2 < 100000; k2++) {
// result += (double)k1 / (double)k2;
result += k1 % k2;
}
}
end = clock();
cout << (end - start) / ((double) CLOCKS_PER_SEC);
cout << " sec \n";
cout<<result<<"\n";
return 0;
}
3.98982 sec
855312446
Для double (раскомментить соотв. строчки)
4.65588 sec
6.04446e+08
Исходная версия soomrack, :
Через cpupower смотрел?
Вроде как тут и есть намного быстрее, может гипердрейдинг или еще чего то как оптимизация на уровне проца идет. Хотя тут самое долгое это операция взятия остатка. Можно посмотреть, как долго она выполняется на разных процах:
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;
int main()
{
clock_t start, end;
// double result = 0.0;
int result = 0;
start = clock();
for (int k1 = 1; k1 < 10000; k1++) {
for (int k2 = 1; k2 < 100000; k2++) {
// result += (double)k1 / (double)k2;
result += k1 % k2;
}
}
end = clock();
cout << (end - start) / ((double) CLOCKS_PER_SEC);
cout << " sec \n";
cout<<result<<"\n";
return 0;
}
3.98982 sec
855312446