Linux下有什么工具可以分析出一个程序的运算时间分布

首页 / 常见问题 / 低代码开发 / Linux下有什么工具可以分析出一个程序的运算时间分布
作者:小信 发布时间:2025-03-03 10:46 浏览量:8072
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

最近在使用 time 命令时,无意间发现了一些隐藏的小秘密和强大功能,今天分享给大家。time 在Linux下是比较常用的命令,可以帮助我们方便的计算程序的运行时间,对比采用不同方案时程序的运行性能。

一、Linux下有什么工具可以分析出一个程序的运算时间分布

最近在使用 time 命令时,无意间发现了一些隐藏的小秘密和强大功能,今天分享给大家。

time在Linux下是比较常用的命令,可以帮助我们方便的计算程序的运行时间,对比采用不同方案时程序的运行性能。看似简单的命令,其实蕴藏着很多细节和技巧,来跟着肖邦一起学习吧。

先来看下最基础的用法,也可能是大家最常见的用法了

  1. root@chopin:~$ time find . -name “chopin.txt”
  2. ……
  3. real   0m0.174s
  4. user   0m0.084s
  5. sys    0m0.084s

可以很清楚看到,find 命令执行的时间为 0.174s,是不是很简单,很方便呢

不过,time 命令输出了三个参数,我们只用到了名列前茅个参数,其它两个参数代表什么含义呢?

这里我来解释一下:

  • real:表示的是墙上时间,说白了,其实就是从程序运行开始到结束所经历的时间;
  • user:表示程序运行期间,cpu 在用户态所花费的时间;
  • sys:表示程序运行期间,cpu 在内核态所花费的时间;

细心的读者会发现,上述案例中的 user + sys 不等于 real,这是怎么回事呢?

其实上边解释的 user 和 sys,是 cpu 执行指令所消耗的时间,并不包含:进程阻塞 IO、调度排队,这些非 cpu 运行时间。

案例中 find 执行查找文件过程中,会有磁盘 IO 读取,这时 cpu 会被释放出来干别的事情,这些 IO 消耗的时间,是不包含在 user 和 sys 统计数据中,所以就出现了 real 时间大于 user + sys 了。

再通过一个示例来验证并加强我们的理解

  1. root@chopin:~$ time sleep 2
  2. real   0m2.001s
  3. user   0m0.000s
  4. sys    0m0.000s

可以清楚地看到,sleep 命令基本上没有消耗 cpu,程序真实的运行时间就是 2 秒

那我们是不是可以得出如下结论了呢:

real >= user + sys

其实这个结论在单个 cpu 情况下,是正确的。

如果服务器是多个 cpu,你的程序正好可以将多个 cpu 充分利用起来,程序运行期间是多核心并行的,那么 user + sys 统计的 cpu 时间可能就会大于 real 时间啦

所以这 3 个时间之间的关系并不是恒定的,你需要清楚的了解服务器是否为多个核心。

通过统计到的 cpu 消耗时间,我们也可以大概知道,程序运行期间 cpu 利用情况。对于单核,计算密集型的程序,real 会很接近 user 和 sys 时间之和的。

Tips:有些同学可能对操作系统可能不太熟悉,这里简单科普下内核态和用户态的基本概念。

Linux 为使系统更稳定,采取了隔离保护的措施,运行状态分为内核态和用户态

  • 用户态:用户代码不具备直接访问底层资源的能力,需要借助内核提供的系统调用 API。在这种隔离保护下,即使用户程序崩溃,也不会影响整个系统的功能。
  • 内核态:内核代码具备最大权限,可执行任意 cpu 指令,不受任何限制。内核态通常是操作系统提供的最底层、最可靠的代码运行的,内核态的代码崩溃是灾难性的,影响整个系统的正常运行。

延伸阅读:

二、MongoDB是什么

MongoDB 是文档型数据库的代表,数据模型基于 Bson,而 Elasticsearch 的文档数据模型是 Json,Bson 本质是 Json 的一种扩展,可以相互直接转换,且它们的数据模式都是可以自由扩展的,基本无限制。MongoDB 本身定位与关系型数据库竞争,支持严格的事务隔离机制,在这个层面实际上与 Elasticsearch 产品定位不一样,但实际工作中,几乎没有公司会将核心业务数据放在 MongoDB 上,关系型数据库依然是名列前茅选择。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

低代码是什么意思简单解释
08-22 14:03
国内低代码平台有哪些
08-22 14:03
低代码平台是什么技术架构
08-22 14:03
低代码开发平台排名
08-22 14:03
低代码平台有哪些公司
08-22 14:03
什么是低代码平台
08-22 14:03
低代码是什么东西
08-22 14:03
低代码开源
08-22 14:03
低代码平台开源框架
08-22 14:03

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科发路8号金融基地1栋5F5
  • 手机:137-1379-6908
  • 电话:0755-86660062
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2025. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
客服咨询热线1
0755-86660062
客服咨询热线2
137-1379-6908
申请预约演示
立即与行业专家交流