Конкурс по 8 лабе

Прошу прощения, что не удалось учесть результаты конкурса в текущем семестре. Но теперь они переносятся в следующий!

Предарительные измерения: время удовлетворения 100k запросов (без учета времени загрузки данных с диска):
 Место Фамилия Мин1 Мин2* Комментарий
 1
Зиневич 4.271 4.409  
 2Дорошкевич 4.361 4.451  
 3Гарна 4.393 4.405  
 4Бреус 4.412 4.442  
 5Каптёл 4.432 4.453  
 6Рыжова 4.454 4.598  
 Головко 4.488 4.571 Интересный прием с ключом типа Double - но это не сработает при хеш-коллизии!
 7Доценко 4.497 4.545  
 8Рыжков 4.497 4.591  
 9Стрельников 4.511 4.756  
 10Богдан 4.539 4.577  

*Мин1 и Мин2 - 1-ое и 2-ое минимальные времена для данного участника (всего из 10 запусков).


Main, который использовался для составления вышеприведенной таблички:
import java.io.*;
import java.util.*;

public class Main{

    public static void main(String[] args) {
        VstupMap m = new VstupMap();

        // 1 read
        try{
            PrintStream out = new PrintStream(System.out, true, "UTF-8");

            InputStreamReader isr = new InputStreamReader(new FileInputStream("apps_kh.txt"), "UTF-8");
            Scanner fs = new Scanner(isr);
            fs.useDelimiter("[\t\n]");
           
            while(fs.hasNext()){
                String univer = fs.next().trim();
                String department = fs.next().trim();
                String direction = fs.next().trim();
                String student = fs.next().trim();
                double att = fs.nextDouble();
                m.add(univer, department, direction, student, att);
            }
           
            fs.close();
            out.flush();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }

        // 2 query
        try{
            PrintStream out = new PrintStream(System.out, true, "UTF-8");

            InputStreamReader isr = new InputStreamReader(new FileInputStream("queries.txt"), "UTF-8");
            Scanner fs = new Scanner(isr);
            fs.useDelimiter("[\t\n]");

            long t1 = System.currentTimeMillis();           
            while(fs.hasNext()){
                String stud = fs.next().trim();
                double att = fs.nextDouble();
//                out.println(stud+":"+m.get(stud, att).size());
                Collection res = m.get(stud, att);
                res.size();
            }
            long t2 = System.currentTimeMillis();
            double diff = (t2-t1)/1000.0;
            System.out.print(diff+" ");
           
            fs.close();
            out.flush();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }// main
}// Main

Окончательные результаты
Для подведения итоговых результатов необходимо, чтобы вы могли оптимизировать также загрузку данных с диска, ключи компилятора и виртуальной машины: поэтому - пришлите мне программу с Main'ом, которая сама читает данные из файлов apps_kh.txt и queries.txt И делает 100 тыс. запросов (как в примере выше), а также ключи компилятора и JVM - тогда я померяю время ее выполнения и занесу его в следующую таблицу:
 Место Фамилия   Мин1Мин2 Коммениарий
     
     
     
     
     

Жду ваши конкурсные программы!
Comments