c# - 如何改善 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;
}
解决方案
推荐阅读
- javascript - javascript 'use strict' 和 Object.defineProperty 设置器
- tkinter - tkinter:带有文本和图像的滚动条和鼠标滚轮
- ionic-framework - ionic 无法为项目服务(退出代码 13)
- reactjs - 嵌套组件是如何渲染的?
- javascript - DOMException: play() 请求被中断
- mongodb - 动态生成mongodb集合名称后缀
- php - 如何在 Laravel 框架中使用 Eloquent 将文件插入数据库?
- html - 从网站运行 R 代码(无付费托管)
- .net-core - 急切加载仅出现在某些结果中
- javascript - 如何从其 URL 验证图像?