Low GC in Java: Using primitives
Low GC in Java: Using primitives
Join the DZone community and get the full member experience.
Join For FreeDownload Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.
In a recent article I examined how using primitives and collections which support primitives natively instead of Wrappers and standard collections can reduce memory usage and improve performance.
Different way to have a Map of int/Integer
There are a number of ways you can use int/Integer and a number of collections you store them in. Depending on which approach you use can have a big difference on the performance and the amount of garbage produced.Test | Performance Range | Memory used |
---|---|---|
Use Integer wrappers and HashMap | 71 - 134 (ns) | 53 MB/sec |
Use int primitives and HashMap | 45 - 76 (ns) | 36 MB/sec |
Use int primitives and FastMap | 58 - 93 (ns) | 28 MB/sec |
Use int primitives and TIntIntHashMap | 18 - 28 (ns) | nonimal |
Use int primitives and simple hash map | 6 - 9 (ns) | nonimal |

The Code
Loop testedint runs = 300 * 300; for (int i = 0; i < runs; i++) { int x = i % 300; int y = i / 300; int times = x * y; Integer count = counters.get(times); if (count == null) counters.put(times, 1); else counters.put(times, count + 1); }Directory of performance examples
From http://vanillajava.blogspot.com/2011/07/low-gc-in-java-using-primitives.html
Download Building Reactive Microservices in Java: Asynchronous and Event-Based Application Design. Brought to you in partnership with Red Hat.
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}