Kể từ Scala-2.11, các phương pháp này có thể có hiệu suất khác nhau. Ví dụ: hãy xem xét mã này:
val bigArray = Array.fill(1000000)(0)
val beginTime = System.nanoTime()
var i = 0
while (i < 2000000000) {
i += 1
bigArray.length
}
val endTime = System.nanoTime()
println(endTime - beginTime)
sys.exit(-1)
Chạy trên máy tính amd64 của tôi có khoảng 2423834 nanos (thay đổi theo thời gian).
Bây giờ, nếu tôi thay đổi phương pháp length
thành size
, thời gian sẽ trở thành khoảng 70764719 nanos.
Đây là hơn 20x chậm hơn.
Tại sao điều đó xảy ra? Tôi không đào nó qua, tôi không biết.Nhưng có trường hợp trong đó length
và size
hoạt động mạnh mẽ khác nhau.
Cá nhân tôi là một bộ chọn lọc ngữ nghĩa, vì vậy tôi chỉ sử dụng 'độ dài' cho những thứ tuyến tính hoặc tuần tự và' kích thước' ngược lại. –