3_04_GLib库入门与实践_计时器

简介

GLib提供的timer不是定时器,而是一个计时器,记录程序运行时间的流逝,在程序调优或性能优化时非常有用,可以很方便地计算某段代码的实际执行时间。本计时器还支持暂停恢复及重启操作。

数据结构

GTimer是一个不透明类型数据结构,可以整体使用它,但无法单独引用其内部的一个结构体成员。

typedef struct _GTimer GTimer;

函数列表

GTimer * 	g_timer_new ()
void 	g_timer_start ()
void 	g_timer_stop ()
void 	g_timer_continue ()
gdouble 	g_timer_elapsed ()
void 	g_timer_reset ()
void 	g_timer_destroy ()

函数功能分类

// 创建,创建一个计时器,当计时器不再使用时需要调用g_timer_destroy销毁计时器。
GTimer * 	g_timer_new ()
// 启动。启动计时器,开始计时。
void 	g_timer_start () 
// 停止。停止对计时器的计时,如果需要恢复,可以使用g_timer_continue函数。
void 	g_timer_stop ()
// 继续。对已经停止的计时器重新计时。
void 	g_timer_continue ()
// 历时。返回计时器从开始计时到现在为止运行的总时间。如果计时器被停止过,停止期间的时间不会被计算在内。
gdouble 	g_timer_elapsed ()
// 重置。重置一个计时器。本函数完全可以被g_timer_start替代。当对一个正在运行的计时器调用g_timer_start时,会重置该计时器并重新计时。
void 	g_timer_reset ()
// 销毁。销毁一个计时器。
void 	g_timer_destroy ()  

函数功能说明及综合演示

计时器功能演示。
源码见glib_examples\glib_timer\glib_timer_all

#include <glib.h>

static void test_timer(void)
{
    GTimer *timer = NULL;

    g_print("\n");

    timer = g_timer_new();

    g_timer_start(timer);
    g_print("start, elapsed: %f \n", g_timer_elapsed(timer, NULL));

    g_timer_stop(timer);
    g_usleep(100*1000);
    g_print("stop, elapsed: %f \n", g_timer_elapsed(timer, NULL));

    g_timer_continue(timer);
    g_usleep(200*1000);
    g_print("continue, elapsed: %f \n", g_timer_elapsed(timer, NULL));

    g_usleep(300*1000);
    g_print("continue2, elapsed: %f \n", g_timer_elapsed(timer, NULL));

    g_timer_reset(timer);
    g_print("reset, elapsed: %f \n", g_timer_elapsed(timer, NULL));

    g_timer_destroy(timer);

    return;
}

gint main(gint argc, gchar **argv)
{
    g_test_init(&argc, &argv, NULL);

    g_test_add_func ("/timer/basic", test_timer);

    return g_test_run();
}

运行结果:

[root@centos7 glib_timer_all]# ./glib_timer_all
/timer/basic:
start, elapsed: 0.000001
stop, elapsed: 0.000015
continue, elapsed: 0.200425
continue2, elapsed: 0.500671
reset, elapsed: 0.000000
OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值