Advertisement
Evilerus

minmaxMT_test

Apr 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.09 KB | None | 0 0
  1. package tk.evilus;
  2.  
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6. public class minmaxMT_test {
  7.    
  8.     public long[] doTest(int arr[], int threads) {
  9.         long times[] = new long[3];
  10.         minmax mtThreads[] = new minmax[threads];
  11.        
  12.         for (int i=0; i<3; i++) {
  13.             long startTest = System.currentTimeMillis();
  14.            
  15.             for (int j = 0; j<threads; j++) {
  16.                 mtThreads[j] = new minmax(j, threads, arr);
  17.             }
  18.            
  19.             for (int j = 0; j<threads; j++) {
  20.                 mtThreads[j].start();
  21.             }
  22.            
  23.             while (true) {
  24.                 try {
  25.                     for (int j = 0; j<threads; j++) {
  26.                         mtThreads[j].join();
  27.                     }
  28.                     break;
  29.                 } catch (Exception e) {
  30.                     e.printStackTrace(System.out);
  31.                 }
  32.                
  33.             }
  34.            
  35.            
  36.             long endTest = System.currentTimeMillis();
  37.             times[i] = endTest - startTest;
  38.         }
  39.        
  40.         return times;
  41.     }
  42.    
  43.     public long[] doTest(double arr[], int threads) {
  44.         long times[] = new long[3];
  45.         minmax mtThreads[] = new minmax[threads];
  46.        
  47.         for (int i=0; i<3; i++) {
  48.             long startTest = System.currentTimeMillis();
  49.            
  50.             for (int j = 0; j<threads; j++) {
  51.                 mtThreads[j] = new minmax(j, threads, arr);
  52.             }
  53.            
  54.             for (int j = 0; j<threads; j++) {
  55.                 mtThreads[j].start();
  56.             }
  57.            
  58.             for (int j = 0; j<threads; j++) {
  59.                 synchronized(mtThreads[j]) {
  60.                     try {
  61.                         if (mtThreads[j].isAlive()) {
  62.                             mtThreads[j].wait();
  63.                         }
  64.                     } catch (Exception e) {
  65.                         e.printStackTrace(System.out);
  66.                     }
  67.                 }
  68.             }
  69.            
  70.             long endTest = System.currentTimeMillis();
  71.             times[i] = endTest - startTest;
  72.         }
  73.        
  74.         return times;
  75.     }
  76.    
  77.     public static void main(String[] args) {
  78.         int c;
  79.         long times[][];
  80.         int arr[];
  81.         double arrD[];
  82.         Random randomMachine = new Random();
  83.         Scanner input = new Scanner(System.in);
  84.         minmaxMT_test m = new minmaxMT_test();
  85.        
  86.         times = new long[20][];
  87.         for (int i=0; i<20; i++) {
  88.             times[i] = new long[3];
  89.         }
  90.        
  91.         System.out.print("Podaj rozmiar tablic: ");
  92.         c = input.nextInt();
  93.         input.close();
  94.        
  95.         System.out.println("Test dla tablicy int: ");
  96.         System.out.println("Lp\tWątki\tRozmiar\t\t\tCzas1\tCzas2\tCzas3\tCzas śr.");
  97.        
  98.         arr = new int[c];
  99.        
  100.         for (int i = 0; i<c; i++) {
  101.             arr[i] = randomMachine.nextInt(c);
  102.         }
  103.        
  104.         for (int i=1; i<=10; i++) {
  105.             System.out.print(i+"\t"+i+"\t"+c+"\t\t\t");
  106.             times[i-1] = m.doTest(arr, i);
  107.             long avgTime = 0;
  108.             for (int j = 0; j<times[i-1].length; j++) {
  109.                 avgTime = avgTime+times[i-1][j];
  110.                 System.out.print(times[i-1][j]+"\t");
  111.             }
  112.             avgTime = avgTime / times[i-1].length;
  113.             System.out.println(avgTime);
  114.         }
  115.        
  116.         c = 20*c;
  117.         arr = new int[c];
  118.         for (int i = 0; i<c; i++) {
  119.             arr[i] = randomMachine.nextInt(c);
  120.         }
  121.        
  122.         for (int i=11; i<=20; i++) {
  123.             System.out.print(i+"\t"+(i-10)+"\t"+c+"\t\t\t");
  124.             times[i-1] = m.doTest(arr, i-10);
  125.             long avgTime = 0;
  126.             for (int j = 0; j<times[i-1].length; j++) {
  127.                 avgTime = avgTime+times[i-1][j];
  128.                 System.out.print(times[i-1][j]+"\t");
  129.             }
  130.             avgTime = avgTime / times[i-1].length;
  131.             System.out.println(avgTime);
  132.         }
  133.        
  134.         c = c/20;
  135.        
  136.         System.out.println("\nTest dla tablicy double: ");
  137.         System.out.println("Lp\tWątki\tRozmiar\t\t\tCzas1\tCzas2\tCzas3\tCzas śr.");
  138.        
  139.         arrD = new double[c];
  140.         for (int i = 0; i<c; i++) {
  141.             arrD[i] = randomMachine.nextInt(c);
  142.         }
  143.        
  144.         for (int i=1; i<=10; i++) {
  145.             System.out.print(i+"\t"+i+"\t"+c+"\t\t\t");
  146.             times[i-1] = m.doTest(arrD, i);
  147.             long avgTime = 0;
  148.             for (int j = 0; j<times[i-1].length; j++) {
  149.                 avgTime = avgTime+times[i-1][j];
  150.                 System.out.print(times[i-1][j]+"\t");
  151.             }
  152.             avgTime = avgTime / times[i-1].length;
  153.             System.out.println(avgTime);
  154.         }
  155.        
  156.         c = 20*c;
  157.         arrD = new double[c];
  158.         for (int i = 0; i<c; i++) {
  159.             arrD[i] = randomMachine.nextInt(c);
  160.         }
  161.        
  162.         for (int i=11; i<=20; i++) {
  163.             System.out.print(i+"\t"+(i-10)+"\t"+c+"\t\t\t");
  164.             times[i-1] = m.doTest(arrD, i-10);
  165.             long avgTime = 0;
  166.             for (int j = 0; j<times[i-1].length; j++) {
  167.                 avgTime = avgTime+times[i-1][j];
  168.                 System.out.print(times[i-1][j]+"\t");
  169.             }
  170.             avgTime = avgTime / times[i-1].length;
  171.             System.out.println(avgTime);
  172.         }
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement