时间戳函数如何避免效率问题

    Linux、Windows等操作系统的系统API时间函数一般涉及哪些操作,在高性能要求的程序中频繁调用,是否会影响效率?

      这里并非在针对性的确定性能瓶颈,只是曾经看到有评价时间函数的调用是一个代价较高的操作,所以想知道系统时间函数在Linux或Windows下是怎样实现的,这中间涉及哪些过程,进而了解为何有时间函数的调用是“代价较高”的操作这种说法。

      个人的理解,所谓开销大不大,要看参照的对象。时间函数比如gettimeofday()本身在所有系统调用里属于调用代价比较小的。之所以说他调用开销高,是因为他是一个系统调用,系统调用要完成用户态->内核态->用户态的转换,可能需要消耗上百时钟周期,和普通调用相比就很高。

      对于高级静态语言来说编写长时间或者高并发的应用,一般针对时间函数做优化可以采取下面的方法,编写一个时间模块,该模块定期使用时间函数获取时间并保存,其他模块使用时间时都通过该模块来获得保存下来的时间,降低了系统调用的频率,代价是获得的时间精度有损失,要按照应用场景进行权衡。

      因为是脚本程序员,所以很多人根本不会关心内存和执行效率这种问题,以至于一旦遇上,需要长时间执行,或者说需要大并发的服务就出现瓶颈,唉唉,还是关心下种问题,不要几句话就申明十多个临时数组来存东西,用N层的循环和递归来做一些基础的事情。一旦遇上像是node或者说twisted这种东西一瞬间脚本程序员就悲剧掉了。即便是js,针对那种一下午都不刷新的onePage页面,我想性能上也是问题,包容那些用ie引擎的人吧、

转载于:https://www.cnblogs.com/maxmys/p/3327226.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值