Package com.inspiresoftware.lib.dto.geda.performance

Source Code of com.inspiresoftware.lib.dto.geda.performance.PerformanceTestLevel1Thread

/*
* 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.performance;

import com.inspiresoftware.lib.dto.geda.adapter.BeanFactory;
import com.inspiresoftware.lib.dto.geda.assembler.Assembler;
import com.inspiresoftware.lib.dto.geda.assembler.DTOAssembler;
import com.inspiresoftware.lib.dto.geda.performance.dto.Level1Dto;
import com.inspiresoftware.lib.dto.geda.performance.dto.Level2Dto;
import com.inspiresoftware.lib.dto.geda.performance.dto.Level3Dto;
import com.inspiresoftware.lib.dto.geda.performance.entity.Level1Entity;
import org.junit.Ignore;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
* Test thread for level 1 full tree test.
*
* @author DPavlov
*/
@Ignore
public class PerformanceTestLevel1Thread implements Runnable {

  private final Sampler sampler = new Sampler();
  private final int lvl1;
  private final int lvl2;
 
  private final ShutdownListener listener;
 
  private final StringBuilder out = new StringBuilder();
 
  public PerformanceTestLevel1Thread(final int lvl1, final int lvl2, final ShutdownListener listener) {
    this.lvl1 = lvl1;
    this.lvl2 = lvl2;
    this.listener = listener;
    this.listener.addObservable(this);
  }

  public void run() {

        try {

            MemUtils.statsToStream(out);
   
            final int lvl2Count = (lvl2 * lvl1 * 5);
            final int lvl3Count = (lvl2 * lvl1 * 5 * 5);
            final int allCount = lvl1 + lvl2Count + lvl3Count;

            final Date start = new Date();

            out.append(start + " - Initializing GeDA performance test on " + allCount + " entities\n");

            final List<Level1Entity> testSample = sampler.getLevel1Entities(1, lvl1, lvl2);

            final Date assemberStart = new Date();
            out.append(assemberStart + " - Finished creating objects in " + (assemberStart.getTime() - start.getTime()) + " millis\n");

            out.append(assemberStart + " - Initializing assembler\n");
            final Assembler assembler = DTOAssembler.newAssembler(Level1Dto.class, Level1Entity.class);
            final Date assemberEnd = new Date();
            out.append(assemberEnd + " - Initialized assembler in " + (assemberEnd.getTime() - assemberStart.getTime()) + " millis\n");

            List<Level1Dto> dtos = new ArrayList<Level1Dto>();
            long assemblyMillis = 0L;

            try {

                final Date startProcess = new Date();
                out.append(startProcess + " - started assembly on "
                        + lvl1 + " lvl1, "
                        + lvl2Count + " lvl2, and "
                        + lvl3Count + " lvl3 entities (total of "
                        + allCount + " entities\n");

                assembler.assembleDtos(dtos, testSample, null, getFactory());

                final Date end = new Date();
                assemblyMillis = (end.getTime() - startProcess.getTime());
                out.append(end + " - finished in " + assemblyMillis + " millis\n");

                dtos = null;

            } catch (Exception iae) {
                out.append(iae.getMessage()).append("\n");
                if (iae.getCause() != null) {
                    out.append(iae.getCause().getMessage()).append("\n");
                }
                iae.printStackTrace();
            }

            final Date startManual = new Date();
            out.append(startManual + " - trying manual copy\n");

            final List<Level1Dto> manualDto = new ArrayList<Level1Dto>();
            for (Level1Entity entity : testSample) {
                manualDto.add(new Level1Dto(entity));
            }
            final Date endManual = new Date();
            final long manualMillis = (endManual.getTime() - startManual.getTime());
            out.append(endManual + " - finished manual copy in " + manualMillis + " millis\n");

            out.append("Performance " + ((double) manualMillis / (double) assemblyMillis) * 100 + "%\n");

        } finally {
            this.listener.notifyFinished(this);           
        }

  }
 
  private BeanFactory getFactory() {
    return new BeanFactory() {

            public Class getClazz(final String entityBeanKey) {
                return null;
            }

            public Object get(String entityBeanKey) {
        if ("lvl1".equals(entityBeanKey)) {
          return new Level1Dto();
        } else if ("lvl2".equals(entityBeanKey)) {
          return new Level2Dto();
        } else if ("lvl3".equals(entityBeanKey)) {
          return new Level3Dto();
        }
        return null;
      }
     
    };
  }

  /** {@inheritDoc} */
  @Override
  public String toString() {
    return out.toString();
  }
 
 
 
}
TOP

Related Classes of com.inspiresoftware.lib.dto.geda.performance.PerformanceTestLevel1Thread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.