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
|
package org.torproject.descriptor;
import org.torproject.descriptor.Descriptor;
import org.torproject.descriptor.DescriptorReader;
import org.torproject.descriptor.DescriptorSourceFactory;
import org.torproject.descriptor.ServerDescriptor;
import java.io.File;
import java.util.Iterator;
public class MeasurePerformance {
public static void main(String[] args) {
measureAverageAdvertisedBandwidth(new File("server-descriptors-2015-11.tar"));
}
private static void measureAverageAdvertisedBandwidth(
File tarballFileOrDirectory) {
System.out.println("Starting measureAverageAdvertisedBandwidth");
final long startedMillis = System.currentTimeMillis();
long sumAdvertisedBandwidth = 0;
long countedServerDescriptors = 0;
DescriptorReader descriptorReader =
DescriptorSourceFactory.createDescriptorReader();
Iterator<Descriptor> descriptors =
descriptorReader.readDescriptors(tarballFileOrDirectory).iterator();
while (descriptors.hasNext()) {
Descriptor descriptor = descriptors.next();
if (!(descriptor instanceof ServerDescriptor)) {
continue;
}
ServerDescriptor serverDescriptor = (ServerDescriptor) descriptor;
sumAdvertisedBandwidth += (long) Math.min(Math.min(
serverDescriptor.getBandwidthRate(),
serverDescriptor.getBandwidthBurst()),
serverDescriptor.getBandwidthObserved());
countedServerDescriptors++;
}
long endedMillis = System.currentTimeMillis();
System.out.println("Ending measureAverageAdvertisedBandwidth");
System.out.printf("Total time: %d millis%n",
endedMillis - startedMillis);
System.out.printf("Processed server descriptors: %d%n",
countedServerDescriptors);
System.out.printf("Average advertised bandwidth: %d%n",
sumAdvertisedBandwidth / countedServerDescriptors);
System.out.printf("Time per server descriptor: %.6f millis%n",
((double) (endedMillis - startedMillis))
/ ((double) countedServerDescriptors));
}
}
|