首页 > 解决方案 > 如何改善 Android Unity 中 Native 插件的性能问题?

问题描述

我写了一些我的游戏的数学代码,我想提高性能,所以我决定用原生 C++ 代码编写它,我使用 NDK 构建 .so 文件并将它放在插件/Android 中,但我对其进行了测试在设备(MI 6)中,我发现性能比 C# 代码差(相同的算法)。测试用例:随机计算 10000 次。有没有人遇到过这些问题?以及如何提高性能。

public static Pow(XFloat a, int b)
{
    if (b == 0)
        return 1;
    long res = XFloat.Factor;
    long basenum = a.n;

    bool positive = true;

    if (b < 0)
    {
        b = -b;
        positive = false;
    }

    while (b != 0)
    {
        if ((b & 1) == 1) res = (res * basenum) / XFloat.Factor;
        basenum = basenum * basenum / XFloat.Factor;
        b >>= 1;
    }

    if (res == 0)
        return 0;

    if (!positive)
        res = XFloat.Factor * XFloat.Factor / res;

    return res;
}

long long _DLLExport CPow(long long a, int b, long long f)
{
    if (b == 0)
        return 1;
    long long res = f;
    long long base = a;

    bool positive = true;

    if (b < 0)
    {
        b = -b;
        positive = false;
    }

    while (b != 0)
    {
        if ((b & 1) == 1) res = (res * base) / f;
        base = base * base / f;
        b >>= 1;
    }

    if (res == 0)
        return 0;

    if (!positive)
        res = f * f / res;

    return res;
}

标签: c#androidperformanceunity3dnative

解决方案


推荐阅读