3 回答

TA貢獻1951條經驗 獲得超3個贊
整個過程有兩件事負責 -
中央處理器
IO 設備
最初,當您將行從一個文件復制到另一個文件時,該過程不涉及 IO 設備(因為您沒有打印任何行)。因此,CPU沒有等待時間。因此,該過程在更短的時間內完成。
當您引入 println 語句時,對于 CPU 從第一個文件讀取的每一行,它必須將該行發送到 IO 設備進行打印。將線路發送到 IO 設備后,CPU 必須等待它完成作業。IO 設備完成打印后,CPU 將繼續該過程并將該行粘貼到第二個文件中。此過程將繼續,直到第一個文件中的所有行都復制到第二個文件。
因此,對于文件中的每一行,CPU必須等待一定的時間。這是處理時間增加的第一個原因。其次,IO 打印會創建文件的另一個副本。因此,現在您正在創建 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.

TA貢獻1807條經驗 獲得超9個贊
“調試”的額外成本非常依賴于平臺。println
如果將 您路由到控制臺,則可能會因與控制臺相關的額外處理而減慢速度。在Windows上默認控制臺非常慢,在Linux上是如此之多。PrintStream
此外,如果您正在使用/,您將配置為在每次添加額外開銷后沖洗。System.outSystem.errPrintStreamprintln
3小時處理2.5 GiB的磁盤是非常慢的。因此,要么你的代碼是復雜的,額外的調試行對整體性能的影響很小,要么你是在Windows上寫入默認控制臺(在以后的情況下,調試是一個巨大的問題)。println
添加回答
舉報