em hồi trước có hỏi anh về for loop và stream và công nhận stream thì tiện lợi nhưng chậm hơn for loop, như vậy 1 lượng data lớn coi như for loop hơn hẳn về performance. Vậy em cũng chưa thật sự hiểu case nào nên dùng stream, ngoài sự tiện lợi của nó ra em thấy nó thua hẳn for loop về tốc độ
Theo như a test lần trước thì nó hơn hẳn 2.5 lần stream luôn : https://stackask.com/question/co-nen-dung-stream-thay-cho-for-loop/ (16 so với 41)
Hmm, khi bạn muốn tạo một pipe logic thì hãy sử dụng stream.
Nếu chỉ nói về tốc độ mà không nói đến lợi ích của các operations thì thông thường Stream sẽ chậm hơn, nếu nhanh hơn thì sẽ cần tốn tài nguyên của CPU.
Stream chậm hơn bởi vì java cần phân tích các operations, thực hiện nhiều câu lệnh logic để chuẩn bị cho stream. (Cơ mà k chậm đến lỗi kém hơn 2.5 lần đâu, check lại test case)
Tuy nhiên nếu dùng stream parallel thì tốc độ sẽ rất nhanh ==> cần tài nguyên CPU, khi đó các task không cần chờ tập hợp tất cả data sẽ được chạy song song trên nhiều thread.
Ví dụ bạn có 200 data là int.
Mỗi data đó bạn cần thực hiện các task sau:
Kết quả ở máy mình chạy sẽ là :
Còn nhiều lý do nữa nhưng 12h đêm rùi, mình ngủ đây 😀
e cảm ơn, anh có thời gian chia sẻ em tiếp nhé bài viết hay quá
Có câu hỏi, rảnh rảnh tui sẽ vào trả lời.