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

本文详细介绍了GLib库中的GTimer,它是一个用于测量代码执行时间的计时器,而非定时器。GTimer支持暂停、恢复和重置功能,非常适合进行程序调优和性能分析。通过g_timer_new()创建计时器,g_timer_start()启动,g_timer_stop()暂停,g_timer_continue()恢复,g_timer_elapsed()获取累计时间,g_timer_reset()重置,最后使用g_timer_destroy()销毁。通过示例代码展示了GTimer的使用流程,帮助开发者更好地理解和应用GTimer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值