That was thorough and clear. Thanks! On Monday, November 18, 2019 at 7:32:09 AM UTC+1, Tatu Saloranta wrote: > > On Sun, Nov 17, 2019 at 10:27 PM Matteo Olivi <[email protected] > <javascript:>> wrote: > > > > Hello, > > Do Jackson ObjectMappers cache serialized objects? > > > > I'm writing a benchmark to test which serialization format is faster. > For each serialization format, one ObjectMapper for the format is > instantiated (by passing the factory for the given serialization format to > the ObjectMapper constructor). The same ObjectMapper instance is then used > to serialize the same object multiple times, and my code prints the time it > took to serialize the object for each iteration. I've noticed that for > every format the first iteration always takes way longer than the others > (e.g. 83 ms at first iteration vs =~ 20ms at others). This is true when > deserializing objects too. > > > > IMO there are two possible reasons: > > 1) The JVM or the ObjectMapper allocates memory for some data structure > lazily, and this needs to be done only once, so the first iteration always > takes longer. > > 2) The ObjectMapper keeps a cache of serialized objects. If this is true > the results printed from my benchmark are garbage. > > > > I did a test where at every iteration one field of the object to > serialize is mutated, and I observed the same phenomena (slow first > iteration), so this seems to rule out caching, but I want to be 100% > confident. > > ObjectMapper does not cache objects it serializers, so benchmark is > not flawed in that way. > > But there is definitely quite a bit first-time work to be done for > constructing all handlers for given type, including serializer(s): > these are cached. > In addition the thing to know about JVM benchmarking is that there is > a lot of optimization for byte code that happens over time, and not > right away: for example just-in-time compilation of (some of) byte > code into native code. So it is very typical for initial run times > (for first couple of seconds) to be much slower than later runs. > > I hope this helps, > > -+ Tatu +- >
-- You received this message because you are subscribed to the Google Groups "jackson-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/723d0e9a-cb99-4983-9f58-a9a5dfffdb3d%40googlegroups.com.
