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