Как улучшить проблему производительности с родными плагинами в Unity of android? - PullRequest
0 голосов
/ 17 мая 2018

Я пишу некоторый математический код своей игры, я хочу улучшить производительность, поэтому я решил написать его с помощью собственного кода 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;
}
...