【发布时间】:2012-03-06 03:24:23
【问题描述】:
好的,我是 android 编程新手,但我创建了一个应用程序,如下所示。
package com.michaelpeerman.probability;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity
{
private EditText number;
private Button submit;
public void flipcoin(int numberint)
{
TextView result = (TextView)findViewById(R.id.result);
int heads = 0;
int tails = 0;
for (int j = 0; j < numberint; j++)
{
int i = 1 + new Random().nextInt(2);
if (i == 1)
heads++;
if (i == 2)
tails++;
result.setText("heads : " + heads + "\ntails : " + tails);
}
}
public void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(R.layout.main);
submit = ((Button)findViewById(R.id.submit));
submit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramView)
{
number = ((EditText)findViewById(R.id.number));
int numberint = Integer.parseInt(number.getText().toString());
flipcoin(numberint);
}
});
}
}
但是与
相比,它的运行速度非常慢package com.michaelpeerman.probability;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class ProbabilityActivity extends Activity
{
public void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(R.layout.main);
TextView result = (TextView)findViewById(R.id.result);
int heads = 0;
int tails = 0;
for (int j = 0; j < 50000; j++)
{
int i = 1 + new Random().nextInt(2);
if (i == 1)
heads++;
if (i == 2)
tails++;
result.setText("heads : " + heads + "\ntails : " + tails);
}
}
我不明白这是为什么。它们都使用相同的代码,除了第一个允许您输入数字并在运行循环之前按提交。 它们不应该是相同的速度吗?我该怎么做才能加快速度?
【问题讨论】:
-
小贴士,不要在循环内创建
new Random()。创建一次。 -
循环动作慢吗?还是整个应用程序变慢了?
-
我想我找到了问题所在。问题是我让它在循环中设置文本。我对其进行了更改,以便现在将其设置在循环之外。
-
如何在循环之外创建一个随机的循环以供循环使用?
标签: android performance random