问题是,“我们可能期望method3比method2运行得更快,为什么会这样?”但我不知道。似乎两种方法都执行相同数量的操作。有人可以赐教吗?
ArrayList<Person> method2(Person x, ArrayList<Person> people){
ArrayList<Person> friends = new ArrayList<Person>();
for (Person y : people) if (x.knows(y)) friends.add(y);
return friends;
}
ArrayList<Person> method3(Person x, ArrayList<Person> people){
ArrayList<Person> friends = new ArrayList<Person>();
for (int=0; i<people.size(); i++){
Person y = people.get(i);
if (x.knows(y)) friends.add(y);
}
return friends;
}
答案 0 :(得分:5)
事实并非如此。两种方法都将以几乎相同的速度运行。
如果他们不会以完全相同的速度运行,那么有两件事情可以解决:
在任何实际情况下都不会有任何区别。
您无法确定 $msg = "";
if (isset($_POST['upload'])) {
$target = "profiles/uploads/".basename($_FILES['image']['name']);
if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {///when upload your file in directory insert yout patch file in directory
$db = mysqli_connect("localhost", "root", "", "db");
$images = $_FILES['image']['name'];
$target_dir = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]" ."profiles/uploads/".$images;//your patch file for show in page website
$sql = "INSERT INTO user_images (images) VALUES ('$target_dir')";
mysqli_query($db, $sql);
$msg = "Image Uploaded Successfully";
header("Location: personal_profile.php?uploadsuccess");
} else {
$msg = "There Was A problem uploading image";
}
}
或method2
是否会更快运行。
答案 1 :(得分:4)
&#34;我们可能期望method3比method2运行得更快,为什么会这样?&#34;
可能但差异应该很小,甚至不被视为选择其中一种的信息。
这两种方法使用方差执行完全相同的操作:for
增强method2()
和使用{{1}访问for
的经典List
} get(int index)
。
method3()
的编译代码将导致使用迭代器,在运行时可能需要更长的时间来执行,但它应该没有显着差异。
例如:method2()
hasNext()
的迭代器执行一些检查和一些非常小的计算:
ArrayList
使用public E next() {
checkForComodification();
int i = cursor;
if (i >= size)
throw new NoSuchElementException();
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length)
throw new ConcurrentModificationException();
cursor = i + 1;
return (E) elementData[lastRet = i];
}
方法的for
计算量较少:
get(int index)