Рабочая программа для моделирования эволюции тройной звездной системы с учетом общей теории относительности непрерывно улучшалась и модифицировалась в течение последних десяти лет. В результате ее код превратился в такую кашу, что дальнейшая его поддержка стала невозможной
(
Read more... )
Reply
Reply
Reply
Reply
Я несколько раз свои числодробилки сравнивал с включенной и выключенной оптимизацией. Разница только в скорости счёта. Но у меня Монте-Карло, никакого долгого численного интегрирования.
Reply
Reply
Reply
Reply
В данном случае вообще непонятно, из-за чего происходит ускорение. Кажется, что деление на 2. и умножение на 0.5 должно занимать одинаковое время.
Reply
Reply
#include
#include
#include
using namespace std;
double secnds()
{
return clock()*1./CLOCKS_PER_SEC;
}
void div()
{
double a=1,b=2,c=3,d=4,e=5,f=0;
for (int i=0;i<1000;i++)
for (int j=0;j<1000;j++)
for (int k=0;k<1000;k++) {
a+=0.00000001;
b+=0.00000002;
c+=0.00000003;
d+=0.00000004;
e+=0.00000005;
f+=a/(b/c+d/e)+i+j+k;
}
printf("f = %21.13e\n",f);
}
void mul()
{
double a=1,b=2,c=3,d=4,e=5,f=0;
for (int i=0;i<1000;i++)
for (int j=0;j<1000;j++)
for (int k=0;k<1000;k++) {
a+=0.00000001;
b+=0.00000002;
c+=0.00000003;
d+=0.00000004;
e+=0.00000005;
f+=a*c*e/(b*e+c*d)+i+j+k;
}
printf("f = %21.13e\n",f);
}
int main(int argc, char *argv[])
{
double t = secnds();
mul();
cout << "mul, t = " << secnds() - t << "\n";
t = secnds();
div();
cout << "div, t = " << secnds() - t << "\n";
return 0;
}
Reply
Leave a comment