• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

比lua更快的脚本luc

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    2015年,写了一个C++语法的脚本,经过测试,性能比lua差太多,就没有继续。今年,闲来无事,继续研究,到底比lua慢在哪里?经过优化,重构,再次优化,再次重构,性能已经比lua快,差不多比lua快3倍的样子。

    测试例子,是循环很多次,计算开方、三次开方,结果如下图:

 

测试代码lua:

function LuaSqrt(x)

    a = x;
    x1 = 1;
    x2 = 2;

    while (x ~= 0 and (x2 <= 0.9999999999 or 1.0000000001 <= x2))
    do
        x1 = x;
        x = (x1*x1 + a) / 2 / x1;
        x2 = x / x1;
    end

    return x;
end;

function LuaSqrt3(x)

    a = x;
    x1 = 1;
    x2 = 2;

    while (x ~= 0 and (x2 <= 0.9999999999 or 1.0000000001 <= x2))
    do
        x1 = x;
        x = (x1*x1*x1 + a) / 2 / x1 / x1;
        x2 = x / x1;
    end

    return x;
end;

function TestCase()
    result = 0;
    result3 = 0;

    i = 0;
    loopCount = 1000000;
    --loopCount = 1000;
    sqrtSource = 22000000000.0;

    while (i < loopCount)
    do
        i = i + 1;
        result = LuaSqrt(sqrtSource);
        result3 = LuaSqrt3(sqrtSource);
    end

    print("result = " .. result .. "\tresult3 = " .. result3);
end
 

测试代码luc:


double LucSqrt(double x)
{
    double a = x;
    double x1 = 1;
    double x2 = 2;
    while (x!=0 && (x2<=0.9999999999 || 1.0000000001<=x2))
    {
        x1 = x;
        x = (x1*x1+a)/2/x1;
        x2 = x/x1;
    }

    return x;
}

double LucSqrt3(double x)
{
    double a = x;
    double x1 = 1;
    double x2 = 2;
    while (x!=0 && (x2<=0.9999999999 || 1.0000000001<=x2))
    {
        x1 = x;
        x = (x1*x1*x1+a)/2/x1/x1;
        x2 = x/x1;
    }

    return x;
}

void TestCase(void)
{
    double result = 0;
    double result3 = 0;

    int i = 0;
    int loopCount = 1000000;
    // int loopCount = 1000;
    double sqrtSource = 22000000000.0;

    while (i < loopCount)
    {
        i = i + 1;
        result = LucSqrt(sqrtSource);
        result3 = LucSqrt3(sqrtSource);
    }

    _tprintf(_T("result = %lf\t\tresult3 = %lf\r\n"), result, result3);
}

TestCase();
 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Openresty+ngx_lua_waf安装发布时间:2022-07-22
下一篇:
Step By Step(Lua输入输出库)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap