본문 바로가기

Java

[박혜웅] JAVA Serialize, Deserialize Benchmarks

자바에서 객체를 네트워크, 파일로 전송하기 위해서는 serialize를 해야 한다.
반대로 전송된 패킷이나 파일에서 다시 객체를 생성하기 위해서는 deserialize를 해야 한다.
하지만 알려져 있듯이, 성능의 문제가 있어서 다른 방법을 이용하는 경우가 많다.
과연 얼마나 성능상 문제가 있는지 String, ArrayList, JSONArray를 통해 비교해 보자.

SerializeTest.java




실행 환경
String의 경우 아이템을 얻을 때, String.substring을 사용하기 위하여, 내부적으로 고정길이(10byte)를 한 아이템으로 저장했다.
JSONArray는 serializable하지 않기 때문에, String 을 이용하여 변환했다.

실행 결과
당연한 결과겠지만, String < JSONArray < ArrayList 순으로 빨랐다.
-----------------------------------
items=100
-----------------------------------
serialize String(100)  : 0.000900 sec
deserialize String(100): 0.000200 sec

serialize ArrayList(100)  : 0.002200 sec
deserialize ArrayList(100): 0.001900 sec

serialize JSONArray(100)  : 0.000900 secs
deserialize JSONArray(100): 0.000600 secs

-----------------------------------
items=1000
-----------------------------------
serialize String(1000)  : 0.003700 sec
deserialize String(1000): 0.000200 sec

serialize ArrayList(1000)  : 0.013700 sec
deserialize ArrayList(1000): 0.015000 sec

serialize JSONArray(1000)  : 0.003100 secs
deserialize JSONArray(1000): 0.003400 secs

-----------------------------------
items=10000
-----------------------------------
serialize String(10000)  : 0.005000 sec
deserialize String(10000): 0.001000 sec

serialize ArrayList(10000)  : 0.042600 sec
deserialize ArrayList(10000): 0.061000 sec

serialize JSONArray(10000)  : 0.011600 secs
deserialize JSONArray(10000): 0.007000 secs