diff --git a/org.eclipse.jdt.core.tests.performance/build.properties b/org.eclipse.jdt.core.tests.performance/build.properties
index 7d4a54d..762724c 100644
--- a/org.eclipse.jdt.core.tests.performance/build.properties
+++ b/org.eclipse.jdt.core.tests.performance/build.properties
@@ -13,6 +13,7 @@
                about.html,\
                jdtcoretestsperf.jar,\
                *.zip/,\
-               local_test.xml
+               local_test.xml,\
+               GenericTypeTest.java
 src.includes = about.html
 source.jdtcoretestsperf.jar = src
diff --git a/org.eclipse.jdt.core.tests.performance/plugin.xml b/org.eclipse.jdt.core.tests.performance/plugin.xml
index 8ea71cd..9edd9b4 100644
--- a/org.eclipse.jdt.core.tests.performance/plugin.xml
+++ b/org.eclipse.jdt.core.tests.performance/plugin.xml
@@ -21,6 +21,7 @@
       <import plugin="org.eclipse.jdt.core.tests.model"/>
       <import plugin="org.junit"/>
       <import plugin="org.eclipse.test.performance"/>
+      <import plugin="org.eclipse.text"/>
    </requires>
 
 </plugin>
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/AllPerformanceTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/AllPerformanceTests.java
index af5df85..274a602 100644
--- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/AllPerformanceTests.java
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/AllPerformanceTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 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
@@ -38,6 +38,7 @@
 			FullSourceWorkspaceTypeHierarchyTests.class,
 			FullSourceWorkspaceModelTests.class,
 			FullSourceWorkspaceCompletionTests.class,
+			FullSourceWorkspaceFormatterTests.class,
 		};
 	}
 
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceASTTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceASTTests.java
index d7fe6e9..0353651 100644
--- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceASTTests.java
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceASTTests.java
@@ -583,7 +583,7 @@
 	 * @deprecated To reduce deprecated warnings
 	 */
 	public void testPerfDomAstCreationJLS2() throws JavaModelException {
-		tagAsSummary("DOM AST tree for one file using JLS2", true); // put in fingerprint
+		tagAsSummary("DOM AST tree for one file using JLS2", false); // do NOT put in fingerprint
 
 		ICompilationUnit unit = getCompilationUnit("org.eclipse.jdt.core", "org.eclipse.jdt.internal.compiler.parser", "Parser.java");
 		Hashtable options = JavaCore.getOptions();
@@ -596,7 +596,7 @@
 	 * Performance DOM/AST creation on the entire workspace using JLS3.
 	 */
 	public void testPerfDomAstCreationJLS3() throws JavaModelException {
-		tagAsSummary("DOM AST tree for one file using JLS3", false); // put in fingerprint
+		tagAsSummary("DOM AST tree for one file using JLS3", false); // do NOT put in fingerprint
 
 		ICompilationUnit unit = getCompilationUnit("org.eclipse.jdt.core", "org.eclipse.jdt.internal.compiler.parser", "Parser.java");
 		createAST(unit, AST.JLS3);
@@ -655,7 +655,7 @@
 	 * @deprecated To reduce deprecated warnings
 	 */
 	public void testWkspDomAstCreationJLS2() throws JavaModelException {
-		tagAsSummary("DOM AST tree for workspace files (JLS2)", true); // put in fingerprint
+		tagAsSummary("DOM AST tree for workspace files (JLS2)", false); // do NOT put in fingerprint
 		runAllProjectsAstCreation(AST.JLS2);
 	}
 
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java
index 0351819..d1d7c55 100644
--- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 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
@@ -636,7 +636,7 @@
 	 * @since 3.2 M6
 	 */
 	public void testFullBuildProjectNoWarning() throws CoreException, IOException {
-		tagAsSummary("Build JDT/Core project (no warning)", true); // put in fingerprint
+		tagAsSummary("Build JDT/Core project (no warning)", false); // do NOT put in fingerprint
 		build(JDT_CORE_PROJECT, warningOptions(-1/*no warning*/), true);
 	}
 
@@ -660,7 +660,7 @@
 	 * @since 3.2 M6
 	 */
 	public void testFullBuildProjectAllWarnings() throws CoreException, IOException {
-		tagAsSummary("Build JDT/Core project (all warnings)", true); // put in fingerprint
+		tagAsSummary("Build JDT/Core project (all warnings)", false); // do NOT put in fingerprint
 		build(JDT_CORE_PROJECT, warningOptions(1/*all warnings*/), false);
 	}
 
@@ -671,7 +671,6 @@
 	 * before put it in builds performance results.
 	 * 
 	 * @throws IOException
-	 * TODO (frederic) remove for 3.2 RC1
 	 */
 	public void testBatchCompilerNoWarning() throws IOException, CoreException {
 		tagAsSummary("Compile folders using cmd line (no warn)", false); // do NOT put in fingerprint
@@ -684,7 +683,7 @@
 	 * @throws IOException
 	 */
 	public void testCompileJDTCoreProjectNoWarning() throws IOException, CoreException {
-		tagAsSummary("Compile JDT/Core with cmd line (no warn)", true); // put in fingerprint
+		tagAsSummary("Compile JDT/Core with cmd line (no warn)", false); // do NOT put in fingerprint
 		compile(JavaCore.PLUGIN_ID, "-nowarn", false/*no log*/, JDT_CORE_SRC_PATHS);
 	}
 
@@ -704,7 +703,7 @@
 	 * @throws IOException
 	 */
 	public void testCompileJDTCoreProjectJavadoc() throws IOException, CoreException {
-		tagAsSummary("Compile JDT/Core with cmd line (javadoc)", true); // put in fingerprint
+		tagAsSummary("Compile JDT/Core with cmd line (javadoc)", false); // do NOT put in fingerprint
 		compile(JavaCore.PLUGIN_ID, "-warn:javadoc", false/*no log*/, JDT_CORE_SRC_PATHS);
 	}
 
@@ -715,7 +714,7 @@
 	 * @since 3.2 M6
 	 */
 	public void testCompileJDTCoreProjectAllWarnings() throws IOException, CoreException {
-		tagAsSummary("Compile JDT/Core with cmd line (all)", true); // put in fingerprint
+		tagAsSummary("Compile JDT/Core with cmd line (all)", false); // do NOT put in fingerprint
 		compile(JavaCore.PLUGIN_ID, ALL_OPTIONS, false/*no log*/, JDT_CORE_SRC_PATHS);
 	}
 
@@ -726,7 +725,7 @@
 	 * @since 3.2 M6
 	 */
 	public void testCompileSWTProjectDefault() throws IOException, CoreException {
-		tagAsSummary("Compile SWT with command line", true); // put in fingerprint
+		tagAsSummary("Compile SWT with command line", false); // do NOT put in fingerprint
 		String[] sourcePaths = {
 				"Eclipse SWT/win32",
 				"Eclipse SWT/common",
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java
new file mode 100644
index 0000000..58e26bd
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 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.jdt.core.tests.performance;
+
+import java.io.File;
+import java.io.PrintStream;
+
+import junit.framework.Test;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.formatter.CodeFormatter;
+import org.eclipse.jdt.core.tests.util.Util;
+import org.eclipse.jdt.internal.formatter.DefaultCodeFormatter;
+
+/**
+ */
+public class FullSourceWorkspaceFormatterTests extends FullSourceWorkspaceTests {
+
+	// Tests counters
+	static int TESTS_COUNT = 0;
+	private final static int WARMUP_COUNT = 5;
+	static int TESTS_LENGTH;
+
+	// Log file streams
+	private static PrintStream[] LOG_STREAMS = new PrintStream[DIM_NAMES.length];
+
+	// Type path
+	static IPath FORMAT_TYPE_PATH;
+	static String FORMAT_TYPE_SOURCE;
+
+/**
+ * @param name
+ */
+public FullSourceWorkspaceFormatterTests(String name) {
+	super(name);
+}
+
+static {
+//	TESTS_NAMES = new String[] {
+//	};
+}
+public static Test suite() {
+	Test suite = buildSuite(testClass());
+	TESTS_LENGTH = TESTS_COUNT = suite.countTestCases();
+	createPrintStream(testClass(), LOG_STREAMS, TESTS_COUNT, null);
+	return suite;
+}
+
+private static Class testClass() {
+	return FullSourceWorkspaceFormatterTests.class;
+}
+
+protected void setUp() throws Exception {
+	super.setUp();
+
+	// Read big file
+	System.out.print("	- Read big file source...");
+	long start = System.currentTimeMillis();
+	FORMAT_TYPE_SOURCE = Util.fileContent(getPluginDirectoryPath()+File.separator+"GenericTypeTest.java");
+	System.out.println("("+(System.currentTimeMillis()-start)+"ms)");
+}
+
+/* (non-Javadoc)
+ * @see junit.framework.TestCase#tearDown()
+ */
+protected void tearDown() throws Exception {
+
+	// End of execution => one test less
+	TESTS_COUNT--;
+
+	// Log perf result
+	if (LOG_DIR != null) {
+		logPerfResult(LOG_STREAMS, TESTS_COUNT);
+	}
+
+	// Print statistics
+	if (TESTS_COUNT == 0) {
+//		System.out.println("-------------------------------------");
+//		System.out.println("Format performance test statistics:");
+//		NumberFormat intFormat = NumberFormat.getIntegerInstance();
+//		System.out.println("-------------------------------------\n");
+	}
+	super.tearDown();
+}
+
+/**
+ * Format file (Parser.java - 225176 chars) using code formatter default options.
+ */
+public void testFormatDefault() throws JavaModelException {
+	tagAsSummary("Format file with default options", false); // do NOT put in fingerprint
+
+	// Warm up
+	String source = PARSER_WORKING_COPY.getSource();
+	int warmup = WARMUP_COUNT;
+	for (int i=0; i<warmup; i++) {
+		long start = System.currentTimeMillis();
+		new DefaultCodeFormatter().format(CodeFormatter.K_COMPILATION_UNIT, source, 0, source.length(), 0, null);
+		if (i==0) {
+			System.out.println("	Time to format file ("+source.length()+" chars) = "+(System.currentTimeMillis()-start)+"ms");
+		}
+	}
+
+	// Measures
+	resetCounters();
+	int measures = MEASURES_COUNT;
+	for (int i=0; i<measures; i++) {
+		runGc();
+		startMeasuring();
+		for (int j=1; j<10; j++)
+			new DefaultCodeFormatter().format(CodeFormatter.K_COMPILATION_UNIT, source, 0, source.length(), 0, null);
+		stopMeasuring();
+	}
+	
+	// Commit
+	commitMeasurements();
+	assertPerformance();		
+}
+
+/**
+ * Format big file (GenericTypeTest.java - 1297242 chars) using code formatter default options.
+ */
+public void testFormatDefaultBigFile() {
+	tagAsSummary("Format big file with default options", false); // do NOT put in fingerprint yet...
+
+	// Warm up
+	String source = FORMAT_TYPE_SOURCE;
+	int warmup = WARMUP_COUNT;
+	for (int i=0; i<warmup; i++) {
+		long start = System.currentTimeMillis();
+		new DefaultCodeFormatter().format(CodeFormatter.K_COMPILATION_UNIT, source, 0, source.length(), 0, null);
+		if (i==0) {
+			System.out.println("	Time to format big file ("+source.length()+" chars) = "+(System.currentTimeMillis()-start)+"ms");
+		}
+	}
+
+	// Measures
+	resetCounters();
+	int measures = MEASURES_COUNT;
+	for (int i=0; i<measures; i++) {
+		runGc();
+		startMeasuring();
+		new DefaultCodeFormatter().format(CodeFormatter.K_COMPILATION_UNIT, source, 0, source.length(), 0, null);
+		stopMeasuring();
+	}
+	
+	// Commit
+	commitMeasurements();
+	assertPerformance();		
+}
+
+protected void resetCounters() {
+	// do nothing
+}
+}
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java
index 9077069..5d4ef77 100644
--- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceModelTests.java
@@ -82,11 +82,7 @@
 
 protected void setUp() throws Exception {
 	super.setUp();
-	if (BIG_PROJECT == null) {
-		setUpBigProject();
-	} else if (BIG_PROJECT_TYPE_PATH == null) {
-		setUpBigProjectInfo();
-	}
+	setUpBigProject();
 }
 private void setUpBigProject() throws CoreException, IOException {
 	try {
@@ -137,12 +133,9 @@
 		}
 		System.out.println("("+(System.currentTimeMillis()-start)+"ms)");
 
-		// Print for log in case of project creation troubles...
-		System.out.println("("+(System.currentTimeMillis()-start)+"ms)");
-		start = System.currentTimeMillis();
-		System.out.print("	- Create compilation unit with secondary type...");
-
 		// Add CU with secondary type
+		System.out.print("	- Create compilation unit with secondary type...");
+		start = System.currentTimeMillis();
 		BIG_PROJECT_TYPE_PATH = new Path("/BigProject/src" + (FOLDERS_COUNT-1) + "/org/eclipse/jdt/core/tests" + (FOLDERS_COUNT-1) + "/performance" + (PACKAGES_COUNT-1) + "/TestBigProject.java");
 		IFile file = workspaceRoot.getFile(BIG_PROJECT_TYPE_PATH);
 		if (!file.exists()) {
@@ -178,16 +171,6 @@
 	}
 	
 }
-private void setUpBigProjectInfo() {
-	// Set up type path
-	BIG_PROJECT_TYPE_PATH = new Path("/BigProject/src" + (FOLDERS_COUNT-1) + "/org/eclipse/jdt/core/tests" + (FOLDERS_COUNT-1) + "/performance" + (PACKAGES_COUNT-1) + "/TestBigProject.java");
-
-	// Set up working copy
-	IWorkspace workspace = ResourcesPlugin.getWorkspace();
-	IWorkspaceRoot workspaceRoot = workspace.getRoot();
-	IFile file = workspaceRoot.getFile(BIG_PROJECT_TYPE_PATH);
-	WORKING_COPY = (ICompilationUnit)JavaCore.create(file);
-}
 /* (non-Javadoc)
  * @see junit.framework.TestCase#tearDown()
  */
@@ -632,7 +615,7 @@
  * (regression test for bug 135083 RangeUtil#isInInterval(...) takes significant amount of time while editing)
  */
 public void testPerfReconcileBigFileWithSyntaxError() throws JavaModelException {
-	tagAsSummary("Reconcile editor change on big file with syntax error", true); // put in fingerprint
+	tagAsSummary("Reconcile editor change on big file with syntax error", false); // do NOT put in fingerprint
 	
 	// build big file contents
 	String method =
@@ -802,7 +785,7 @@
 }
 
 public void testCloseProjects() throws JavaModelException {
-	tagAsSummary("Close all workspace projects", true); // put in fingerprint
+	tagAsSummary("Close all workspace projects", false); // do NOT put in fingerprint
 
 	// Warm-up
 	int length=ALL_PROJECTS.length;
diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceTests.java
index ccc797b..f0576fd 100644
--- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceTests.java
+++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceTests.java
@@ -647,10 +647,9 @@
 		int length = ALL_PROJECTS.length;
 		for (int i = 0; i < length; i++) {
 			String projectName = ALL_PROJECTS[i].getElementName();
+			if (BIG_PROJECT_NAME.equals(projectName)) continue; // will be set later
 			if (JavaCore.PLUGIN_ID.equals(projectName)) {
 				JDT_CORE_PROJECT = ALL_PROJECTS[i];
-			} else if (BIG_PROJECT_NAME.equals(projectName)) {
-				BIG_PROJECT = (JavaProject) ALL_PROJECTS[i];
 //			} else if (JUNIT_PROJECT_NAME.equals(projectName)) {
 //				JUNIT_PROJECT = ALL_PROJECTS[i];
 			}
@@ -746,8 +745,8 @@
 		if (fingerprint) super.tagAsSummary(shortName, dimensions);
 	}
 	public void startMeasuring() {
-		super.startMeasuring();
 		this.startMeasuring = System.currentTimeMillis();
+		super.startMeasuring();
 	}
 	public void stopMeasuring() {
 		super.stopMeasuring();
diff --git a/org.eclipse.jdt.core.tests.performance/test.xml b/org.eclipse.jdt.core.tests.performance/test.xml
index c20fc83..c619d42 100644
--- a/org.eclipse.jdt.core.tests.performance/test.xml
+++ b/org.eclipse.jdt.core.tests.performance/test.xml
@@ -57,7 +57,7 @@
       <property name="data-dir" value="${jdt-core-perf-folder}/data"/>
       <property name="plugin-name" value="${plugin-name}"/>
       <property name="classname" value="org.eclipse.jdt.core.tests.performance.AllPerformanceTests"/>
-      <property name="timeout" value="9000000" />
+      <property name="timeout" value="12000000" />
     </ant>
   </target>
 
