I have tried only with 6 elements as I didn't have much data. I ran each method thrice
When I ran basic for loop, it took very less time compare to parallel stream. Is it due to less number or record. If yes, can I get any graph where I can see after how may records parallel stream can overtake basic for loop for basic opearion.
long startTime = System.nanoTime();
// 222436 331094 316872ns
for (int i = 0; i < employeeOtps.size(); i++) {
Employee emp = employees.get(i);
EmployeeOtp employeeOtp = employeeOtps.get(i);
emp.setMobileNo(employeeOtp.getReqValue());
employees.set(i, emp);
}
// OR this one
// 3071437 3879830 3177251ns
IntStream.range(0, employeeOtps.size()).parallel.forEach(i ->
{
EmployeeMaster emp = employees.get(i);
EmployeeOtp employeeOtp = employeeOtps.get(i);
emp.setMobileNo(employeeOtp.getReqValue());
employees.set(i, emp);
});
// OR this one
//8727341 14350819 6088261ns
IntStream.range(0, employeeOtps.size()).forEach(i ->
{
EmployeeMaster emp = employees.get(i);
EmployeeOtp employeeOtp = employeeOtps.get(i);
emp.setMobileNo(employeeOtp.getReqValue());
employees.set(i, emp);
});
long totalTime = (System.nanoTime() - startTime);
I ran one by one and recorded time.
for loop:- 222436, 331094, 316872 ns
stream w/o parallel:- 3071437, 3879830, 3177251 ns
stream with parallel:- 3071437, 3879830, 3177251 ns
less time order wise for size = 6
basic for loop (290ms) < intstream parallel(3376ms) < intsream(9722ms)