C - 测量功能时间执行

时间:2015-05-13 23:05:40

标签: c function time execution measure

我想测量inserted_sort函数的缩短时间。但是,结果是0.0000000秒。我能做什么?我尝试了其他时间的库。不幸的是,它没有...谢谢。我又打了个电话。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int main(void) 
{
  int number=1;
  if(number == 1)
  {
     struct timeval start, end;
     gettimeofday(&start, NULL);

     for(int i=0; i<5;i++)
     {
     insertion_sort( kelime, n );   
     }
     gettimeofday(&end, NULL);

     printf("Elapsed time is %.10f",(end.tv_sec * 1000000 + end.tv_usec)-   (start.tv_sec * 1000000 + start.tv_usec));
 }

2 个答案:

答案 0 :(得分:2)

using UnityEngine; using System.Collections; public class CircleShapeGenerator : MonoBehaviour { public int segments = 100; public float radius = 1; public Color c1 = new Color( 1, 1, 1, 0.1f ); public Color c2 = new Color( 1, 1, 1, 0.1f ); LineRenderer line; void Start () { line = gameObject.AddComponent<LineRenderer>(); line.material = new Material(Shader.Find("Particles/Additive")); line.SetWidth(0.05F, 0.05F); line.SetVertexCount (segments + 1); line.useWorldSpace = false; } void Update() { line.SetColors(c1, c2); float angle = 20f; for (int i = 0; i < (segments + 1); i++) { float x = Mathf.Sin (Mathf.Deg2Rad * angle) * radius; float y = Mathf.Cos (Mathf.Deg2Rad * angle) * radius; line.SetPosition( i, new Vector3( x,y,0) ); angle += (360f / segments); } } } 只有秒粒度。而您的代码最糟糕的可能是微秒或毫秒。请使用time代替具有微秒粒度的内容。

但请注意,gettimeofdaytime都会为您提供时间。如果您想要CPU时间gettimeofday可以使用。

答案 1 :(得分:0)

您的计算和打印是:

//blockquote/font/font/table//tr/td[3]//text()

您正在尝试使用浮点格式打印整数值;这不会带来幸福。假设整数运算不会溢出,那么您可以使用:

 printf("Elapsed time is %.10f",
        (end.tv_sec * 1000000 + end.tv_usec) -
        (start.tv_sec * 1000000 + start.tv_usec));

将为您提供浮点值以使用浮点格式进行打印。当 printf("Elapsed time is %.6f", ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)) / 1000000.0); 仅支持6(并且默认为6位小数,但显式性通常很好)时,请求10个小数位是没有意义的。

你也可以使用:

gettimeofday()

关键是要确保在浮点运算中完成足够的计算。