`
litaocheng
  • 浏览: 337735 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

测量函数执行时间

阅读更多
很多时候你需要测量某个函数的执行时间,从而进行优化。

在erlang中,通过timer:tc/3可以很方便的获取某个函数的执行时间:

tc(Module, Function, Arguments) -> {Time, Value}

Types Module = Function = atom()
Arguments = [term()]
Time = integer() in microseconds
Value = term()


返回值中Time表示函数消耗时间,单位为ms。
有些时候,我们需要某个函数的执行多次,从而更准确的获取函数的执行时间,我们可以书写这样的函数:


-module(test_avg).
-compile(export_all).

tc(M, F, A, N) when N > 0 ->
    L = test_loop(M, F, A, N, []),
    Len = length(L),
    LSorted = lists:sort(L),
    Min = lists:nth(1, LSorted),
    Max = lists:nth(Len, LSorted),
    Med = lists:nth(round(Len/2), LSorted),
    Avg = round(lists:foldl(fun(X, Sum) ->
				    X + Sum end,
			    0,
			    LSorted)/Len),
    io:format("Range:~b - ~b mics~n"
	      "Median:~b mics ~n"
	      "Average:~b mics ~n",
	      [Min, Max, Med, Avg]),
    Med.

test_loop(_M, _F, _A, 0, List) ->
    List;
test_loop(M, F, A, N, List) ->
    {T, _R} = timer:tc(M, F, A),
    test_loop(M, F, A, N-1, [T|List]).


这样,我们就可以获取某个函数执行多次的最少消耗时间,最大消耗时间,平均消耗时间了。
实验一下:

> 
test_avg:tc(test_state, test, [], 10).
>Range:68 - 99 mics
Median:76 mics
Average:77 mics

分享到:
评论

相关推荐

    如何在keil中查看程序执行时间

    为了准确测量函数执行时间,我们需要在代码的关键位置设置断点,并通过观察变量来记录时间点。 - **设置断点**:在想要测量执行时间的函数前后各设置一个断点。例如,假设我们要测量`delay()`函数的执行时间,则在`...

    定时函数的应用综述.pdf

    6. **Windows的GetTickCount函数**:GetTickCount返回系统启动后的毫秒数,比clock函数精度更高,但仍然不是绝对精确的定时器,主要用于简单计时或多媒体应用,如测量函数执行时间。 在选择合适的定时函数时,需要...

    php计算函数执行时间的方法

    总结一下,PHP提供多种方式来测量函数执行时间,如使用`microtime()`和自定义函数`getMillisecond()`。理解并掌握这些方法,对于提升代码的效率和性能优化至关重要。同时,要注意浮点数的计算可能会存在精度问题,...

    JavaScript的函数劫持

    - **性能分析**:通过测量函数执行时间,找出性能瓶颈。 - **AOP(面向切面编程)**:在函数调用前后加入特定逻辑,比如事务管理、权限验证等。 - **模拟与测试**:在测试环境中替换某些复杂的依赖,简化测试逻辑。 ...

    Python @函数装饰器及@staticmethod,@classmethod.docx

    5. **性能监控**:测量函数执行时间或其他性能指标。 #### 六、静态方法与类方法 除了通用的函数装饰器,Python 还提供了内置的装饰器 `@staticmethod` 和 `@classmethod`。 - **@staticmethod**:将一个方法标记...

    DSP中的DSP函数执行时间自动测试方法

    以TI C64x+ DSP为例,描述了如何利用TI集成开发环境及相关的配套脚本分析工具,实现大量函数执行时间自动测试的方法,该方法效率高,并且可获得函数运行的各类信息,为软件的函数级优化提供了充分依据。  1.前言 ...

    鲲鹏920处理器的汇编代码优化

    首先,实验介绍了如何测量函数执行时间,这是评估优化效果的关键。通过C语言调用汇编,利用`clock_gettime()`函数记录开始和结束时间,计算内存拷贝函数`memorycopy()`的执行时间。实验提供了一个基础的内存拷贝函数...

    apihook钩子截获对DLL的调用.zip

    - **性能分析**:测量函数执行时间,优化程序性能。 - **安全监测**:检测恶意软件对特定API的滥用。 - **插件系统**:扩展应用程序功能,如游戏模组。 在使用API Hook时,需要注意潜在的问题,如稳定性、兼容性和...

    cpp-benchmarkGoogle提供小型微基准测试支持库

    其核心功能包括测量函数执行时间、计算平均运行时间、处理并发执行等。通过这些功能,开发者可以对比不同实现方案的性能,从而选择最佳实践。 **使用方法** 1. **安装与集成**: `google-benchmark`通常可以通过包...

    EasyHook-2.7.6270.0.zip_c# easy hook_easyhook_easyhook 2.7_eas

    - **性能分析**:通过拦截函数调用,可以测量函数执行时间,从而发现性能瓶颈。 - **系统监控**:可以监控系统级别的行为,如网络通信、文件操作等。 - **插件系统**:允许第三方开发者扩展主程序的功能,而无需...

    Decode lua调试工具

    6. **性能分析**:某些高级调试器还包括性能分析工具,可以测量函数执行时间,帮助优化代码性能。 7. **协同工作**:Decoda可能支持多人协作,多人可以同时查看和调试同一份代码,这对于团队开发来说非常方便。 总...

    Python高级疯狂讲义v4.5_20181104-746-876.pdf

    3. **计时器**:测量函数执行时间。 #### 示例代码分析: ```python def makeBlod(func): def wrapped(): return "<b>" + func() + "</b>" return wrapped @makeBlod def test1(): return "helloworld-1" ...

    js查看一个函数的执行时间实例代码

    通过本文的介绍,我们了解了如何通过 JavaScript 测量函数的执行时间,并通过实例代码加深了理解。在实际开发中,我们还可以利用现代浏览器提供的开发者工具(如 Chrome 的 Timeline 或 Firefox 的性能分析工具),...

    函数加密解密(外加计算函数加密过程执行时间).rar

    文件列表中的"函数加密解密(外加计算函数加密过程执行时间)"很可能是一个包含详细步骤的教程或代码示例,不仅展示了如何实现函数级别的加密和解密,还提供了测量加密过程执行时间的方法。这在性能优化和理解加密...

    dsp运行时间测量方法及操作说明

    第二种方法是使用clock()函数,这是一种更简单的测量方式,但可能无法准确测量极短的时间间隔。操作步骤如下: 1. 在程序中包含time.h头文件。 2. 定义clock_t类型的变量start、stop和subtraction。 3. 在要测量的...

    unity中测试函数运行时间工具

    这种方法简单易用,适用于初步了解函数执行时间的情况。 #### 2. 使用Profiler窗口 Unity还内置了一个强大的性能分析工具——Profiler窗口。它可以详细展示每个帧中不同部分的执行时间,包括CPU时间、GPU时间等。...

    测试函数的运行时间,有文档说明

    在Java中,我们可以使用内置的`System.currentTimeMillis()`或者`System.nanoTime()`方法来获取当前时间,通过比较函数执行前后的时间差,计算出函数的运行时间。然而,这些方法并不总是提供最精确的结果,因为它们...

    JavaScript 调试控制台(JS)

    7. **性能分析**:许多现代调试器还包含性能分析工具,可以测量函数执行时间,识别性能瓶颈。 8. **事件监听**:可以监听特定的DOM事件,了解事件触发时的情况。 9. **网络请求**:监控页面的HTTP请求,查看请求头...

Global site tag (gtag.js) - Google Analytics