时钟功能返回零时差
Clock function returns zero time difference
由于某种原因,以下程序打印出的持续时间=0.000000000000000000。我读过一个非常类似的问题。C‘clock((’函数只是返回一个零,但那里的建议没有帮助。我采集时间样本的循环是100次迭代,每一次都有一个精度为0.00000001的牛顿寻根方法,当然它不需要0秒^-20来计算吗?很抱歉,如果这些问题看起来真的很像家庭作业,那么我真的不懂编码。有人看到这里可能出了什么问题吗?谢谢
double f(...){...}
double h;
double newton (double prev_step_solution, double x)
{
double root=prev_step_solution;
while (((prev_step_solution+h*f(root,x)-root)>0.00000001)
||((prev_step_solution+h*f(root,x)-root)<-0.00000001))
{
root = root-(h*f(root,x)+prev_step_solution-root)/(h*fder(root,x)-1);
}
return root;
}
int main()
{
int i;
double euler [2][101];
h=1/100;
std::clock_t start;
double duration;
start = std::clock();
for (i=1; i<=200; i++)
{
euler [0][i] = h*i;
euler [1][i] = newton(euler[1][i-1],h*(i-1));
}
duration = ((double)( std::clock()-start ))/((double) CLOCKS_PER_SEC);
printf(" euler %.20f n",(double)duration);
return 0;
}
另一种计时方法是使用std::chrono
库。
#include <chrono>
#include <iostream>
int main()
{
auto start = std::chrono::steady_clock::now();
// do work
auto end = std::chrono::steady_clock::now();
auto result = std::chrono::duration<double, std::milli>(end - start).count();
std::cout << result << " millisecondsn";
}
对我来说很好。不过你的程序中有错误:
for (i=1;i<=200;i++)
{
euler[0][i]=h*i;
euler[1][i]=newton(euler[1][i-1],h*(i-1));
}
euler数组的大小是euler[2][101]
(101(,但您要对其进行200次迭代。
将循环更改为for (i=1;i<=100;i++)
此外,初始化启动->std::clock_t start = std::clock();
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 为什么我在地图中搜索STL时差很大?
- 为什么当你将函数的返回值乘以零时它不会短路?
- 时钟功能返回零时差
- printf(时差程序)中的引用问题
- 如何找到纪元时间戳和 std::chrono::system_clock::now 之间的时差(以毫秒为单位)
- 计时器达到零时如何播放声音?
- 计算C++军事时间的时差
- C 计时差为2个时钟之间的差异
- 如何在跨平台 c++ 32 位系统中获取以毫秒为单位的时差
- 在使用按位移位而不是 mod 时,CUDA 中存在显着的时差
- 将 UTC 时差转换为字符串增强
- 使用"%"与"&"时差/增加不同
- 当b不为零时,我总是有“(a/b*b)+a%b==a”吗
- 如何在整数为零时不打印它
- 将 int 转换为罗马数字,仅在输入零时才结束
- 在 c++ 中获取以毫秒为单位的时差
- 为什么用“std::chrono”进行时差测量时,与“double”类型相比,用“float”类型给出的有效数字更多
- 滚动条位置为零时不SB_LINEDOWN
- 编译时的时差