/* * This code is distributed under The GNU Lesser General Public License (LGPLv3) * Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html * * Copyright Denis Pavlov 2009 * Web: http://www.genericdtoassembler.org * SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/ * SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/ */ package com.inspiresoftware.lib.dto.geda.benchmark; import com.google.caliper.Param; import com.google.caliper.Runner; import com.google.caliper.SimpleBenchmark; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Address; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Country; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Name; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Person; import com.inspiresoftware.lib.dto.geda.benchmark.dto.AddressDTO; import com.inspiresoftware.lib.dto.geda.benchmark.dto.PersonDTO; import com.inspiresoftware.lib.dto.geda.benchmark.support.geda.GeDABasicMapper; /** * User: denispavlov * Date: 12-09-18 * Time: 1:35 PM */ public class CaliperGeDASynBenchmark extends SimpleBenchmark { public enum Lib { JAVASSIST(new GeDABasicMapper("javassist")), BCEL(new GeDABasicMapper("bcel")), SUNTOOLS(new GeDABasicMapper("suntools")), REFLECTION(new GeDABasicMapper("reflection")); private Mapper mapper; Lib(final Mapper mapper) { this.mapper = mapper; } } @Param private Lib lib; @Param({ "1", "100", "1000" }) private int length; private Person personLoaded; private PersonDTO personDTOLoaded; private Mapper mapper; @Override protected void setUp() throws Exception { final Name name = new Name("Sherlock", "Holmes"); final Country country = new Country("United Kingdom"); final Address address = new Address("221B Baker Street", null, "London", country, "NW1 6XE"); final Person entity = new Person(1234567890123L, name, address); personLoaded = entity; final PersonDTO dto = new PersonDTO(); dto.setFirstName("Sherlock"); dto.setLastName("Holmes"); final AddressDTO addressDTO = new AddressDTO(); addressDTO.setAddressLine1("221B Baker Street"); addressDTO.setCity("London"); addressDTO.setPostCode("NW1 6XE"); addressDTO.setCountryName("United Kingdom"); dto.setCurrentAddress(addressDTO); personDTOLoaded = dto; mapper = lib.mapper; } public void timeFromDTOToEntity(int reps) { for (int i = 0; i < reps; i++) { for (int ii = 0; ii < length; ii++) { mapper.fromDto(personDTOLoaded); } } } public void timeFromEntityToDTO(int reps) { for (int i = 0; i < reps; i++) { for (int ii = 0; ii < length; ii++) { mapper.fromEntity(personLoaded); } } } public static void main(String[] args) throws Exception { Runner.main(CaliperGeDASynBenchmark.class, args); } }