Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package project;
- import java.util.Locale;
- import java.util.Random;
- import java.util.Scanner;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.PrintWriter;
- public class test {
- // possible args
- // -n 13 - size 13, elements are randomly generated
- // -i m3x-data.in - matrix and size are stored in a text file m3x-data.in
- // -o m3x-data.out - result of matrix is stored in a text file m3x-data.out
- // -t 3 - specify how many threads will be running
- // -q - don't print whenever a thread starts/stops, only print how long it
- // took for the whole process
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Matrix matrix = null;
- int size = 0;
- int inputMethod = 0;
- // need this to know which input method to exclude, if both are in the
- // args
- // 0 means it hasn't it been input yet
- // 1 for random
- // 2 for text file
- String outputFile = ""; // won't save if it's still ""
- int threadMax = 1;
- double result = 0;
- boolean quiet = false;
- Random r = new Random();
- for (int i = 0; i < args.length; i += 2) {
- switch (args[i]) {
- case "-n": {
- if (inputMethod == 0) {
- size = Integer.parseInt(args[i + 1]);
- matrix = new Matrix(size);
- for (int p = 0; p < size; p++) {
- for (int d = 0; d < size; d++) {
- int Low = 10;
- int High = 100;
- int Result = r.nextInt(High - Low) + Low;
- matrix.SetElement(Result, p, d);
- }
- }
- inputMethod = 1;
- }
- break;
- }
- case "-i": {
- if (inputMethod == 0) {
- File file = new File(args[i + 1]);
- try {
- Scanner input = new Scanner(file).useLocale(Locale.US);
- size = input.nextInt();
- matrix = new Matrix(size);
- for (int p = 0; p < size; p++) {
- for (int d = 0; d < size; d++) {
- matrix.SetElement(input.nextDouble(), p, d);
- }
- }
- input.close();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- inputMethod = 2;
- }
- break;
- }
- case "-o": {
- outputFile = args[i + 1];
- break;
- }
- case "-t": {
- threadMax = Integer.parseInt(args[i + 1]);
- Matrix.threadMax = threadMax;
- break;
- }
- case "-q": {
- quiet = true;
- break;
- }
- }
- }
- if (matrix != null) {
- long starttime = System.nanoTime();
- for (int i = 0; i < threadMax; i++) {
- ThreadedMatrix p = new ThreadedMatrix(quiet, i);
- Thread t = new Thread(p);
- p.thisThread = t;
- Matrix.threadedMatrices.add(p);
- }
- Matrix.threadedMatrices.get(0).Push(matrix);
- long starttimeCalcOnly = System.nanoTime();
- for (ThreadedMatrix thread : Matrix.threadedMatrices) {
- thread.thisThread.start();
- }
- try {
- for (ThreadedMatrix thread : Matrix.threadedMatrices) {
- thread.thisThread.join();
- }
- } catch (InterruptedException e) {
- }
- long calcTimeTotal = System.nanoTime() - starttime;
- long calcTime = System.nanoTime() - starttimeCalcOnly;
- result = ThreadedMatrix.result;
- for (int p = 0; p < size; p++) {
- for (int d = 0; d < size; d++) {
- System.out.print(matrix.Get(d, p) + " ");
- }
- System.out.print("\n");
- }
- System.out.print("total time: " + calcTimeTotal + " ns\n");
- System.out.print("time to calc only: " + calcTime + " ns");
- System.out.print("\nresult: " + result);
- if (outputFile != "") {
- try {
- PrintWriter out = new PrintWriter(outputFile);
- out.println(result);
- out.close();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement