blob: aec964bba8b758ecf6b7815180e61f638a76e410 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.core.tests.runtime.perf;
import java.util.HashMap;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.tests.harness.PerformanceTestRunner;
import org.eclipse.core.tests.runtime.RuntimeTest;
public class BenchPath extends RuntimeTest {
public BenchPath() {
super();
}
public BenchPath(String testName) {
super(testName);
}
public static Test suite() {
return new TestSuite(BenchPath.class);
// TestSuite suite = new TestSuite(BenchPath.class.getName());
// suite.addTest(new BenchPath("testToString"));
// return suite;
}
/**
* Tests performance of equals and hashCode by using paths
* as keys in a hash map.
*/
public void testHash() {
final int REPEAT = 500000;
final IPath[] paths = generateVariousPaths();
final HashMap map = new HashMap(32);
for (int i = 0; i < paths.length; i++)
map.put(paths[i], "");
final int numPaths = paths.length;
new PerformanceTestRunner() {
protected void test() {
for (int p = 0; p < numPaths; p++)
map.get(paths[p]);
}
}.run(this, 10, REPEAT);
}
/**
* Tests the performance of path creation
*/
public void testPathCreation() {
final int REPEAT = 50000;
new PerformanceTestRunner() {
protected void test() {
//folders (5)
new Path("/");
new Path("/Foo");
new Path("/Foo/bar");
new Path("/Foo/bar/baz");
new Path("/Foo/bar/baz/blap");
//files (15)
new Path("/Foo/abc.txt");
new Path("/Foo/bar/abc.txt");
new Path("/Foo/bar/baz/abc.txt");
new Path("/Foo/bar/baz/blap/abc.txt");
new Path("/Foo/bar/abc.txt");
new Path("/Foo/bar/baz/abc.txt");
new Path("/Foo/bar/baz/blap/abc.txt");
new Path("/Foo/bar/baz/abc.txt");
new Path("/Foo/bar/baz/blap/abc.txt");
new Path("/Foo/bar/baz/abc.txt");
new Path("/Foo/bar/baz/blap/abc.txt");
new Path("/Foo/bar/baz/abc.txt");
new Path("/Foo/bar/baz/blap/abc.txt");
new Path("/Foo/bar/baz/blap/blam/abc.txt");
new Path("/Foo/bar/baz/blap/blam/blip/boop/abc.txt");
}
}.run(this, 20, REPEAT);
}
/**
* Tests the performance of Path.toOSString
*/
public void testToOSString() {
final int REPEAT = 50000;
final IPath[] paths = generateVariousPaths();
new PerformanceTestRunner() {
protected void test() {
for (int p = paths.length; --p >= 0;)
paths[p].toOSString();
}
}.run(this, 10, REPEAT);
}
/**
* Tests the performance of Path.toOSString
*/
public void testToString() {
final int REPEAT = 50000;
final IPath[] paths = generateVariousPaths();
new PerformanceTestRunner() {
protected void test() {
for (int p = paths.length; --p >= 0;)
paths[p].toString();
}
}.run(this, 10, REPEAT);
}
/**
* Returns an array containing various paths.
*/
private IPath[] generateVariousPaths() {
IPath[] paths = new IPath[20];
int i = 0;
paths[i++] = new Path("/");
paths[i++] = new Path("/Foo");
paths[i++] = new Path("/Foo/bar");
paths[i++] = new Path("/Foo/bar/baz");
paths[i++] = new Path("/Foo/bar/baz/blap");
//files (15)
paths[i++] = new Path("/Foo/abc.txt");
paths[i++] = new Path("/Foo/bar/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/abc.txt");
paths[i++] = new Path("/Foo/bar/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/blam/abc.txt");
paths[i++] = new Path("/Foo/bar/baz/blap/blam/blip/boop/abc.txt");
return paths;
}
}