/** | |
* Copyright (c) 2009, 2011 Mia-Software. | |
* 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: | |
* Gregoire DUPE (Mia-Software) - initial API and implementation | |
* Nicolas Bros (Mia-Software) - Bug 335003 - [Discoverer] : Existing Discoverers Refactoring based on new framework | |
* Grégoire Dupe (Mia-Software) - Bug 339695 - H2 support in MoDisco Java discoverer benchmarks | |
*/ | |
package org.eclipse.modisco.java.discoverer.benchmark; | |
import java.io.IOException; | |
import org.eclipse.core.resources.IResource; | |
import org.eclipse.core.runtime.CoreException; | |
import org.eclipse.core.runtime.IProgressMonitor; | |
import org.eclipse.gmt.modisco.infra.common.cdo.derby.DerbyCDOServer; | |
import org.eclipse.gmt.modisco.infra.common.core.logging.MoDiscoLogger; | |
import org.eclipse.jdt.core.IJavaProject; | |
import org.eclipse.modisco.infra.discovery.benchmark.MultiProjectBenchmark; | |
import org.eclipse.modisco.java.discoverer.benchmark.cdo.client.BenchmarkJavaDiscovererCDO; | |
import org.eclipse.modisco.java.discoverer.benchmark.cdo.client.nousage.JavaDiscovererCDONoUsages; | |
import org.eclipse.modisco.java.discoverer.benchmark.cdo.server.DerbyCDOServerNoAudits; | |
import org.eclipse.modisco.java.discoverer.benchmark.cdo.server.H2CDOServer; | |
import org.eclipse.modisco.java.discoverer.benchmark.emf.client.JavaDiscovererClassicalEMF; | |
import org.eclipse.modisco.java.discoverer.benchmark.emf.client.JavaDiscovererEMFMinimalEObject; | |
import org.eclipse.modisco.java.discoverer.benchmark.emf.client.JavaDiscovererEMFNoUsages; | |
import org.eclipse.modisco.java.discoverer.benchmark.emf.client.JavaDiscovererIncrementalClassicalEMF; | |
import org.eclipse.modisco.java.discoverer.benchmark.emf.client.JavaDiscovererIncrementalEMF; | |
import org.eclipse.modisco.java.discoverer.benchmark.emfstat.Statistics; | |
public class RunBenchmark extends AbstractRunBenchmark { | |
@Override | |
public MultiProjectBenchmark createReport(final IJavaProject source, | |
final IProgressMonitor monitor) throws CoreException, IOException { | |
initStatProject(source); | |
benchmark(source, monitor); | |
Statistics.copyLog(getStatProject().getLocation().toFile()); | |
Report report = new Report(getStatProject()); | |
MultiProjectBenchmark benchmarkModel = report.generate(); | |
try { | |
getStatProject().refreshLocal(IResource.DEPTH_INFINITE, monitor); | |
} catch (CoreException e) { | |
MoDiscoLogger.logWarning(e, Activator.getDefault()); | |
} | |
return benchmarkModel; | |
} | |
private long before; | |
private void begin(final String name) { | |
System.out.println("beginning: " + name); //$NON-NLS-1$ | |
this.before = System.currentTimeMillis(); | |
} | |
private void end() { | |
System.out.println("took : " + (System.currentTimeMillis() - this.before)); //$NON-NLS-1$ | |
} | |
protected void benchmark(final IJavaProject source, final IProgressMonitor monitor) { | |
// XMI, incremental | |
begin("XMI, incremental"); //$NON-NLS-1$ | |
disco(source, JavaDiscovererIncrementalEMF.class, monitor); | |
end(); | |
// XMI, MinimalEObject | |
begin("XMI, MinimalEObject"); //$NON-NLS-1$ | |
disco(source, JavaDiscovererEMFMinimalEObject.class, monitor); | |
end(); | |
// XMI, Without usages | |
begin("XMI, Without usages"); //$NON-NLS-1$ | |
disco(source, JavaDiscovererEMFNoUsages.class, monitor); | |
end(); | |
// Reference discoverer | |
begin("Reference discoverer"); //$NON-NLS-1$ | |
disco(source, JavaDiscovererClassicalEMF.class, monitor); | |
end(); | |
// Incremental and classical EMF | |
begin("Incremental and classical EMF"); //$NON-NLS-1$ | |
disco(source, JavaDiscovererIncrementalClassicalEMF.class, monitor); | |
end(); | |
// CDO+H2, No audits, With usage | |
begin("CDO+H2, No audits, With usage"); //$NON-NLS-1$ | |
serverAndDisco(source, H2CDOServer.class, BenchmarkJavaDiscovererCDO.class, monitor); | |
end(); | |
// CDO+H2, No audits, Without usages | |
begin("CDO+H2, No audits, Without usages"); //$NON-NLS-1$ | |
serverAndDisco(source, H2CDOServer.class, JavaDiscovererCDONoUsages.class, monitor); | |
end(); | |
// CDO+Derby, No audits, With usages | |
begin("CDO+Derby, No audits, With usages"); //$NON-NLS-1$ | |
serverAndDisco(source, DerbyCDOServerNoAudits.class, BenchmarkJavaDiscovererCDO.class, | |
monitor); | |
end(); | |
// CDO+Derby, No audits, Without usages | |
begin("CDO+Derby, No audits, Without usages"); //$NON-NLS-1$ | |
serverAndDisco(source, DerbyCDOServerNoAudits.class, JavaDiscovererCDONoUsages.class, | |
monitor); | |
end(); | |
// CDO+Derby, with audits, With usages | |
begin("CDO+Derby, with audits, With usages"); //$NON-NLS-1$ | |
serverAndDisco(source, DerbyCDOServer.class, BenchmarkJavaDiscovererCDO.class, monitor); | |
end(); | |
} | |
} |