在erlang中计时一个函数

气泡

我正在尝试编译以下erlang代码:

   my_time_func(F) ->
    {Mega, Mini, Micro} = now(),
    F,
    {SMega,SMini,SMicro} = now(),
    {FMega,FMini,FMicro} = {SMega - Mega, SMini - Mini, SMicro - Micro},
    if 
        FMicro < 0 ->  %guard 1
                if 
                    FMini - 1 < 0 -> {FMega - 1, FMini, FMicro + (FMicro * 2) + 1};
                    true > 0 -> {FMega, FMini - 1, FMicro + (FMicro * 2) + 1};
                end;
        true ->  %guard 2
                if 
                    FMini < 0 -> {FMega - 1, FMini + (FMini * 2) + 1, FMicro} ;
                    true > 0 -> {FMega,FMini,FMicro} ;
                end;
    end.

但是它说我在第19行(这是第一个结束)之前有语法错误。我是否缺少某种分号?

最初,我打算将其发布在代码审查中,因为此代码非常“丑陋”。有没有更好的办法来做这样的事情?(为函数计时),而无需使用内置函数,最好不单独使用erlang模块。

阿尔珀

这是Erlangif表达式

if
    GuardSeq1 ->
        Body1;
    ...;
    GuardSeqN ->
        BodyN
end

因此,您需要删除属于表达式;之前的内容,固定版本如下;endif

   my_time_func(F) ->
    {Mega, Mini, Micro} = now(),
    F,
    {SMega,SMini,SMicro} = now(),
    {FMega,FMini,FMicro} = {SMega - Mega, SMini - Mini, SMicro - Micro},
    if 
        FMicro < 0 ->  %guard 1
                if 
                    FMini - 1 < 0 -> {FMega - 1, FMini, FMicro + (FMicro * 2) + 1};
                    true > 0 -> {FMega, FMini - 1, FMicro + (FMicro * 2) + 1}
                end;
        true ->  %guard 2
                if 
                    FMini < 0 -> {FMega - 1, FMini + (FMini * 2) + 1, FMicro} ;
                    true > 0 -> {FMega,FMini,FMicro} 
                end
    end.

关于问题的第二部分,timestamp以微秒为单位取2 s的差值可能是另一种方式,例如:

now_diff({Meg2, Sec2, Mic2}, {Meg1, Sec1, Mic1}) ->
    ((Meg2 * 1000000 + Sec2) * 1000000 + Mic2) - ((Meg1 * 1000000 + Sec1) * 1000000 + Mic1).

my_time_func(F) ->
    T1 = now(),
    F(),
    T2 = now(),
    Diff = now_diff(T2, T1),
    {Diff div 1000000000000, (Diff rem 1000000000000) div 1000000, Diff rem 1000000}.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Erlang中计时功能

来自分类Dev

编写一个Erlang timeit函数

来自分类Dev

如何在一个函数中计算平均字典

来自分类Dev

用计时器 php 创建一个函数

来自分类Dev

Javascript:多个计时器与多个一个计时器多个函数调用

来自分类Dev

在一个选择查询中计算多个聚合函数时,SQL Server如何遍历行

来自分类Dev

如何在python中的一个类中计算__repr__函数调用次数?

来自分类Dev

从计时器触发的另一个调用Azure函数

来自分类Dev

当我的计时器为零时调用一个函数

来自分类Dev

试图用JavaScript计时,出现错误,Uncaught TypeError:undefined不是一个函数

来自分类Dev

从另一个函数停止 JavaScript 计时器

来自分类Dev

在 while 循环内的函数上放置一个计时器

来自分类Dev

如何计时一个C程序

来自分类Dev

创建一个计时器

来自分类Dev

如何使用erlang编写一个函数来筛选列表中的元素

来自分类Dev

尝试在Python中计时我的sqrt函数

来自分类Dev

在一个选择查询中计算多个聚合函数时,SQL Server如何在行上进行迭代

来自分类Dev

添加事件侦听器以停止从另一个函数 jQuery 启动的计时器

来自分类Dev

MySQL在一个查询中计算不同的项目

来自分类Dev

PostgreSQL在一个查询中计算不同的组

来自分类Dev

MySQL在一个查询中计算多列

来自分类Dev

如何在Python中计算一个特定的单词?

来自分类Dev

在一个查询中计算多列

来自分类Dev

在MySQL中计数一个特殊的列

来自分类Dev

在R中计算日期(作为一个类)

来自分类Dev

在同一个查询中计数和求和?

来自分类Dev

仅在一个 textarea 中计数的字符

来自分类Dev

在 SAS 中计算一个月中的天数

来自分类Dev

一次一个摇摆计时器?

Related 相关文章

热门标签

归档