Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file operation in binary vs text mode -- performance concern

Tags:

c++

c

file-io

In many projects, I saw that data object/structure are written into file in binary mode, and then retrieve them back from the file in binary mode again.

I wonder why they do it in binary mode? Any performance difference between text and binary mode? If not, then when to use binary mode or text mode?

like image 945
Alcott Avatar asked Aug 16 '12 05:08

Alcott


1 Answers

Binary is faster. Consider an integer stored in 32 bits (4 bytes), such as 123456. If you were to write this out as binary (which is how it is represented in the computer) it would take 4 bytes (ignoring padding between items for alignment in structures).

To write the number as text, it has to be converted to a string of characters (some overhead to convert and memory to store) and then written it out, it will take at least 6 bytes as there are 6 characters to respresent the number. This is not including any additional padding such as spaces for alignment or delimiters to read/seperate the data.

Now if you consider it you had several thousands of items, the additional time can add up and require more space, which would take longer to read in and then there is the additonal time to convert back to binary for storage after you have read the value into memory.

The advantage to text, is that it is much easier to read for persons, rather then trying to read binary data or hex dumps of the data.

like image 192
Glenn Avatar answered Oct 13 '22 22:10

Glenn