我正在尝试使用numba进行质数分解算法,但无法获得令人满意的结果。
这是我的代码:
FirebaseAuth auth; //firebase auth
FirebaseUser user; // firebase user
var imageUrl = "assets/image.png"; //you can use a image
//as a default image that would be replaced later with the profile photo
Widget userProfilePhoto()
{
return Center(
child: Container(
height: 100.0,
width: 100.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit : BoxFit.fill,
image: NetworkImage(userurl)
)
),
)
),
}
void checkUser()
{
//Check if the user is signned in or not with the currentUser() function
if(auth.currentUser() != null)
{
setState((){
userImageUrl = user.photoUrl;
//if the user is signned in then set the url to be the image url
});
}
else
{
//call signin method to make the user signin
signIn();
}
}
当我执行它时,numba函数似乎变慢了,所以我猜想它没有按照预期的方式工作。
答案 0 :(得分:1)
如果运行jit(DumbPrimeFactors, nopython=True)
,则会看到一个错误,向您显示numba在object
模式下正在将该函数设置为吉它,因为它不知道如何将所有内容转换为机器代码,而这不会为您提供最佳性能。解决方法是更改行:
result_list = list()
收件人:
result_list = []
似乎将python转换为IR(中间表示)的numba代码不了解list()
语法。然后在我的计算机上,numba手动版本比未手动版本快大约7倍。还要注意,当您为numba代码计时时,第一次运行它时,看到的时间就是运行时+编译时间。随后的所有运行都将使用jitted代码的缓存版本,因此您只会看到实际的执行时间。