我一直在做一个Android游戏,我发现它在牛轧糖上的运行速度是棉花糖运行速度的两倍以上。实际上,我发现在代码中的任何两点之间,时间的增长似乎大致相同。
因此,我制作了一个测试应用程序,当按下后退按钮时,进行了测试,但是我又得到了大致相同的结果(下面的代码)。我使用两个Android虚拟设备进行了测试(请参见代码中记录的平均时间(以毫秒为单位)),但最初发现它是因为我的平板电脑已更新为牛轧糖,因此它不是特定于AVD的。
我很困惑是什么原因造成的。我的一些想法如下:
牛轧糖未优化编译器(api min为15,目标为25,而我正在使用sdk工具25.0.2进行构建)。我觉得这不太可能,因为这将是一个非常普遍的问题,谷歌会立即解决。
操作系统正在使用更多资源,因此我的游戏剩下的资源更少。不太可能,因为这不应该将速度降低2倍。
添加的操作系统对CPU使用率的限制较小。也许我必须要求具有较高的优先级或类似的要求,但是我希望有清晰的文档记录,所以也不太可能。
Android Studio对我来说不是最佳设置。这对我来说似乎是最有可能的,但我找不到任何可以帮助我的东西。
任何见解或复制品表示赞赏!谢谢。
主要活动
package com.example.nickgkg.test;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity{
TextView text;
long time = 0;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView)this.findViewById(R.id.text);
}
@Override
public void onBackPressed(){
//API 24(nougat) vs API 23(marshmallow)
//API 25 performs the same as API 24 so I didn't include it
long t=System.nanoTime();
if(false){//Toggle this to change the test
float garbage;
for(int i=0;i<100000000;i++)
garbage=i*27/2200f;
//API 24:710ms vs API 23:620ms
}else{
for(int i=0;i<1000000;i++)
something();
//API 24:320ms vs API 23:120ms
}
time=System.nanoTime() - t;
text.setText(time/1000000f+"ms");
}
private void something(){
//BLANK function call
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.nickgkg.test.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/text"/>
</RelativeLayout>
最佳答案
更新android studio修复了问题
(从2.2更新到2.3)。我仍然不确定为什么会首先发生这种情况,但我认为可能是因为牛轧糖的调试版本没有像棉花糖的调试版本那样优化。另一个注意事项;也许如果我使用发行版而不是调试版进行测试,那么我将永远不会遇到这个问题(尽管还没有测试过)。