За весь процесс отвечают две вещи:
- Процессор
- Устройство ввода-вывода
Изначально, когда вы копируете строки из одного файлас другой стороны, в процесс не вовлечено устройство ввода-вывода (поскольку вы не печатали ни одной строки).Таким образом, нет времени ожидания для процессора.Следовательно, процесс завершился за меньшее время.
Когда вы ввели оператор println , для каждой строки, которую ЦП читает из первого файла, он должен отправить эту строку на устройство ввода-вывода для печати.,После отправки линии на устройство ввода-вывода ЦПУ должен дождаться завершения работы.Как только устройство ввода-вывода завершит печать, процессор продолжит процесс и вставит эту строку во второй файл.Этот процесс будет продолжаться до тех пор, пока все строки в первом файле не будут скопированы во второй файл.
Таким образом, для каждой строки в файле ЦП должен ждать определенное количество времени.Это первая причина увеличения времени обработки.Во-вторых, при печати ввода-вывода создается еще одна копия файла.Итак, теперь вы создаете 2 копии вместо одной.
46 000 000 строк?
Let's take the time taken by each operation in the process is 1 microsecond.Initially -
Time took by CPU to copy a line = 1 microsecond
Time took by CPU to paste a line = 1 microsecond
Total time for copying 46,000,000 lines = 46,000,000 microsecond = 46 sec
Total time for pasting 46,000,000 lines = 46,000,000 microsecond = 46 sec
Total time of the entire process = 92 sec.
Введено
Time took by CPU to copy a line = 1 microsecond
Time took by IO to paste a line = 1 microsecond
Time took by CPU to paste a line = 1 microsecond
Waiting time of CPU for every line = 1 microsecond
Total time taken by CPU for copying 46,000,000 lines = 46,000,000 microsecond = 46 sec
Total time taken by IO for copying 46,000,000 lines = 46,000,000 microsecond = 46 sec
Waiting time of CPU = 46,000,000 microsecond = 46 sec
Total time by CPU for pasting 46,000,000 lines = 46,000,000 microsecond = 46 sec
Total time of the entire process = 184 sec.
Надеюсь, это ответит на ваш запрос!