All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jruby.runtime.profile.package-info Maven / Gradle / Ivy

There is a newer version: 9.4.9.0
Show newest version
/**
 * The profile package contains the api to implement an profiler for jruby.
 * In the sub-package builtin you can find the profiler implementation shipped with jruby.
 * To implement your own profiler implement the {@link org.jruby.runtime.profile.ProfilingService ProfilingService}
 * interface, add your implementation to the classpath an add the command line argument --profile.service my.impl.class
 *
 * Example Profiling Service Impl.
 *
 * 
 *public class MyProfiler implements ProfilingService {
 *
 *  private final ConcurrentMap methods = new ConcurrentHashMap(1000);
 *
 *  public ProfileCollection newProfileCollection(ThreadContext threadContext) {
 *    return new MyCollection();
 *  }
 *
 *  public MethodEnhancer newMethodEnhancer(Ruby ruby) {
 *    return new MyMethodEnhancer();
 *  }
 *
 *  public ProfileReporter newProfileReporter(ThreadContext threadContext) {
 *    return new MyReporter();
 *  }
 *
 *  private class MyCollection implements ProfileCollection {
 *
 *    private long serial;
 *
 *    public void profileEnter(long method) {
 *      this.serial = method;
 *    }
 *
 *    public void profileExit(long method, long time) {
 *      String name = methods.get(serial);
 *      serial = method;
 *      System.out.println(name + ": " + (System.nanoTime() - time));
 *    }
 *  }
 *
 *  private class MyMethodEnhancer implements MethodEnhancer {
 *
 *    public DynamicMethod enhance(String name, DynamicMethod delegate) {
 *      if ( isMyApp( delegate ) ) {
 *        methods.putIfAbsent(delegate.getSerialNumber(), name);
 *        return new ProfilingDynamicMethod(delegate);
 *      } else {
 *        return delegate;
 *      }
 *    }
 *
 *    private boolean isMyApp( DynamicMethod method ) {
 *      //if( delegate.getRealMethod() instanceof PositionAware && ((PositionAware)delegate.getRealMethod()).getFile().contains(""))
 *      return method.getRealMethod().getImplementationClass().getName().startsWith("MyApp::");
 *    }
 *  }
 *
 *  private static class MyReporter implements ProfileReporter {
 *
 *    public void report(ProfileCollection profileCollection) {
 *      MyCollection collection = (MyCollection) profileCollection;
 *      // do nothing
 *    }
 *  }
 *
 *}
 * 
* * @author Andre Kullmann */ package org.jruby.runtime.profile;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy