@ -0,0 +1,71 @@ | |||
import java.io.BufferedWriter; | |||
import java.io.File; | |||
import java.io.FileWriter; | |||
import java.math.*; | |||
/** | |||
* Simple class to generate random data for | |||
* file IO tests. | |||
* | |||
* @author Jeffery Russell 1-31-19 | |||
*/ | |||
public class DataCreator | |||
{ | |||
/** | |||
* Generates an obscure random character | |||
* @return | |||
*/ | |||
private static char rndChar() | |||
{ | |||
// or use Random or whatever | |||
int rnd = (int) (Math.random() * 52); | |||
char base = (rnd < 26) ? 'A' : 'a'; | |||
return (char) (base + rnd % 26); | |||
} | |||
/** | |||
* Simple function to save contents to the disk | |||
* | |||
* @param s | |||
* @param fileName | |||
*/ | |||
private static void saveToDisk(String s, String fileName) | |||
{ | |||
BufferedWriter writer; | |||
try | |||
{ | |||
File file = new File(fileName); | |||
file.createNewFile(); | |||
writer = new BufferedWriter(new FileWriter(file)); | |||
writer.write(s); | |||
writer.flush(); | |||
writer.close(); | |||
} | |||
catch (Exception e) | |||
{ | |||
e.printStackTrace(); | |||
} | |||
} | |||
/** | |||
* Creates 5MB of random test data to use | |||
*/ | |||
public static void main(String[] arguments) | |||
{ | |||
System.out.println("Creating Test Files"); | |||
for(int i = 0; i < 100; i++) | |||
{ | |||
//10k random characters for each file | |||
//each file is 10kb * 500 files, total size of 5MB | |||
String s = ""; | |||
for(int j = 0; j < 1000000; j++) | |||
{ | |||
s = s + rndChar(); | |||
} | |||
saveToDisk(s, "./testData/" + i + ".txt"); | |||
System.out.println(s); | |||
} | |||
} | |||
} |
@ -0,0 +1,40 @@ | |||
import java.util.*; | |||
/** | |||
* File to test the performance of multi threaded file | |||
* io by reading a large quantity of files in parallel | |||
* using a different amount of threads. | |||
* | |||
* @author Jeffery Russell 1-31-19 | |||
*/ | |||
public class MultiThreadedFileReadTest | |||
{ | |||
public static void main(String[] args) | |||
{ | |||
List<Integer> x = new ArrayList<>(); | |||
List<Double> y = new ArrayList<>(); | |||
for(int i = 1; i <= 64; i++) | |||
{ | |||
long threadTotal = 0; | |||
for(int w = 0; w < 20; w++) | |||
{ | |||
TaskManager boss = new TaskManager(i); | |||
for(int j = 0; j < 500; j++) | |||
{ | |||
boss.addTask(new ReadTask("./testData/" + i + ".txt")); | |||
} | |||
long startTime = System.nanoTime(); | |||
boss.runTasks(); | |||
long endTime = System.nanoTime(); | |||
long durationMS = (endTime - startTime)/1000000; | |||
threadTotal+= durationMS; | |||
} | |||
x.add(i); | |||
y.add(threadTotal/20.0); //finds average | |||
} | |||
System.out.println(x); | |||
System.out.println(y); | |||
} | |||
} |
@ -0,0 +1,13 @@ | |||
import matplotlib.pyplot as plt | |||
xList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64] | |||
yList = [230.5, 124.0, 84.65, 63.9, 51.6, 44.2, 39.15, 34.9, 31.9, 28.7, 27.2, 25.05, 24.25, 22.8, 21.25, 20.45, 19.8, 19.4, 18.6, 17.45, 17.0, 16.95, 16.4, 24.15, 15.2, 15.2, 15.0, 14.3, 14.7, 14.65, 14.65, 14.75, 13.85, 15.1, 14.35, 35.75, 15.3, 14.45, 14.25, 13.65, 14.45, 14.6, 13.95, 14.65, 14.5, 14.3, 14.85, 14.15, 15.0, 16.25, 14.25, 14.4, 14.15, 14.45, 14.25, 14.85, 14.3, 14.35, 15.35, 13.6, 14.3, 14.2, 14.3, 13.95] | |||
plt.plot(xList, yList) | |||
plt.xlabel('Number of Threads') | |||
plt.ylabel('Execution Time (MS)') | |||
plt.show() |