ee.ut.soras.test_ajavt.KiiruseTestiTulemus.java Source code

Java tutorial

Introduction

Here is the source code for ee.ut.soras.test_ajavt.KiiruseTestiTulemus.java

Source

//  Evaluation tools for Ajavt
//  Copyright (C) 2009-2015  University of Tartu
//  Author:   Siim Orasmaa
//  Contact:  siim . orasmaa {at} ut . ee
//  
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.

package ee.ut.soras.test_ajavt;

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

import org.joda.time.DurationFieldType;
import org.joda.time.Period;
import org.joda.time.PeriodType;

import ee.ut.soras.ajavtV2.util.LogiPidaja;

/**
 *   Klass AjaVT protsessimiskiiruste salvestamiseks. Voimaldab iga faili kohta salvestada eraldi 
 *  t3mesta'le kulunud aega, ajavt-le kulunud aega ning l6puks leida protsessimise kiirust. 
 * 
 *   @author Siim Orasmaa
 */
public class KiiruseTestiTulemus {

    List<Long> preprocessExecTimes = new ArrayList<Long>();
    List<Long> ajavtProcessTimes = new ArrayList<Long>();
    List<Long> t3mestaTimes = new ArrayList<Long>();
    List<Long> fileSizesInBytes = new ArrayList<Long>();
    List<Long> fileSizesInCPs = new ArrayList<Long>();

    //==============================================================================
    //      G e t t e r s     a n d     S e t t e r s
    //==============================================================================

    public List<Long> getPreprocessExecTimes() {
        return preprocessExecTimes;
    }

    public void addPreprocessExecTimes(long execTime) {
        (this.preprocessExecTimes).add(execTime);
    }

    public void addPreprocessExecTimes(String execTime) {
        try {
            long time = Long.parseLong(execTime);
            (this.preprocessExecTimes).add(time);
        } catch (Exception e) {
        }
    }

    public List<Long> getAjavtProcessTimes() {
        return ajavtProcessTimes;
    }

    public void addAjavtProcessTimes(long ajavtProcessTime) {
        (this.ajavtProcessTimes).add(ajavtProcessTime);
    }

    public void addAjavtProcessTimes(String ajavtProcessTime) {
        try {
            long time = Long.parseLong(ajavtProcessTime);
            (this.ajavtProcessTimes).add(time);
        } catch (Exception e) {
        }
    }

    public List<Long> getFileSizesInBytes() {
        return fileSizesInBytes;
    }

    public void addFileSizeInBytes(Long fileSize) {
        (this.fileSizesInBytes).add(fileSize);
    }

    /**
     *   Add file size in codepoints.
     */
    public void addFileSizeInCPs(Long fileSize) {
        (this.fileSizesInCPs).add(fileSize);
    }

    public void addT3MestaTimes(Long time) {
        (this.t3mestaTimes).add(time);
    }

    //==============================================================================
    //      C a l c u l a t i n g    r e s u l t s
    //==============================================================================

    private double getAverage(List<Long> results) {
        double sum = 0.0;
        for (Long resultTimeMS : results) {
            sum += resultTimeMS;
        }
        return (sum / results.size());
    }

    private String convertToOtherFields(double timeInMills) {
        Period p = new Period((long) timeInMills, PeriodType.millis());
        p = p.normalizedStandard();
        DurationFieldType[] fieldTypes = p.getFieldTypes();
        int[] values = p.getValues();
        if (values.length == fieldTypes.length) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < values.length; i++) {
                if (values[i] != 0) {
                    sb.append(values[i] + " " + fieldTypes[i].getName() + " ");
                }
            }
            return sb.toString();
        }
        return p.toString();
    }

    private double getSpeed(List<Long> preprocess, List<Long> ajavt, List<Long> fileSizes) {
        double avgSpeed = 0.0;
        if (preprocess.size() == ajavt.size() && ajavt.size() == fileSizes.size()) {
            for (int i = 0; i < preprocess.size(); i++) {
                double time = preprocess.get(i) + ajavt.get(i);
                double size = fileSizes.get(i);
                avgSpeed += size / time;
            }
            return (avgSpeed / preprocess.size());
        } else if (ajavt.size() == fileSizes.size()) {
            for (int i = 0; i < fileSizes.size(); i++) {
                double time = ajavt.get(i);
                double size = fileSizes.get(i);
                avgSpeed += size / time;
            }
            return (avgSpeed / fileSizes.size());
        }
        return avgSpeed;
    }

    //==============================================================================
    //      P r i n t i n g   r e s u l t s
    //==============================================================================

    public void printResultsOfLastTagging(LogiPidaja logi) {
        logi.println();
        logi.println("----------------------------------------------------");
        logi.println(" ");
        List<Long> preprocess = preprocessExecTimes.subList(preprocessExecTimes.size() - 1,
                preprocessExecTimes.size());
        List<Long> t3mesta = t3mestaTimes.subList(t3mestaTimes.size() - 1, t3mestaTimes.size());
        List<Long> ajavt = ajavtProcessTimes.subList(ajavtProcessTimes.size() - 1, ajavtProcessTimes.size());
        List<Long> fileSizeBytes = fileSizesInBytes.subList(fileSizesInBytes.size() - 1, fileSizesInBytes.size());
        List<Long> fileSizeCPs = fileSizesInCPs.subList(fileSizesInCPs.size() - 1, fileSizesInCPs.size());
        logi.println(" Last file size:    " + fileSizeBytes.get(0) + " bytes");
        logi.println("                    " + fileSizeCPs.get(0) + " codepoints");
        logi.println(" Last preprocess time: " + convertToOtherFields(preprocess.get(0)));
        logi.println(" Last t3mesta time:    " + convertToOtherFields(t3mesta.get(0)));
        logi.println(" Last ajavt time:      " + convertToOtherFields(ajavt.get(0)));
        double speedBytes = getSpeed(preprocess, ajavt, fileSizeBytes);
        double speedCodePoint = getSpeed(preprocess, ajavt, fileSizeCPs);
        logi.println(" Last speed: " + speedBytes + " bytes/millisec");
        logi.println("             " + speedCodePoint + " codepoints/millisec");
    }

    public void printOverallResults(LogiPidaja logi) {
        logi.println();
        logi.println("----------------------------------------------------");
        logi.println(" Avg file size:    " + getAverage(fileSizesInBytes) + " bytes");
        logi.println("                   " + getAverage(fileSizesInCPs) + " codepoints");
        logi.println(" Avg preprocess time: " + convertToOtherFields(getAverage(preprocessExecTimes)));
        logi.println(" Avg t3mesta time:    " + convertToOtherFields(getAverage(t3mestaTimes)));
        logi.println(" Avg ajavt time:      " + convertToOtherFields(getAverage(ajavtProcessTimes)));
        logi.println();
        double speedBytes = getSpeed(preprocessExecTimes, ajavtProcessTimes, fileSizesInBytes);
        double speedCodePoint = getSpeed(preprocessExecTimes, ajavtProcessTimes, fileSizesInCPs);
        logi.println(" Avg speed: " + speedBytes + " bytes/millisec");
        logi.println("            " + speedCodePoint + " codepoints/millisec");

    }

}