在JPL,我们使用模型转换技术进行系统工程工作。 我们使用OMG的QVT规范的Eclipse QVTO实现。
http://www.eclipse.org/modeling/m2m/downloads/index.php?project=qvtoml
然而,Eclipse QVTO编译器的速度令人沮丧。 通过明智地应用Guava的缓存,我已经成功实现了重要性 Eclispe QVTO编译器的性能改进。可以做得更多 但凭借我所拥有的,我想了解有效性 通过在运行时监视缓存统计信息来实现缓存优化; 即,com.google.common.cache.CacheStats
有没有人建议w.r.t.如何定义JProfiler自定义遥测探针 这样做?
答案 0 :(得分:0)
对于可以使用静态方法访问的单个缓存,它非常简单。在自定义探针向导中,将元数据脚本设置为
metaData.recordOnStartup(true);
metaData.telemetry(true);
metaData.addCustomTelemetry("Request count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Miss count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Miss rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Load success count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Eviction count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Total load time", Unit.MICROSECONDS, 1f);
metaData.addCustomTelemetry("Average load penalty", Unit.MICROSECONDS, 1f);
和遥测脚本
import test.CacheTest;
import com.google.common.cache.*;
Cache cache = CacheTest.getSingleCache();
if (cache == null) {
return;
}
CacheStats stats = cache.stats();
data[0] = (int)stats.requestCount();
data[1] = (int)stats.hitCount();
data[2] = (int)(stats.hitRate() * 100);
data[3] = (int)stats.missCount();
data[4] = (int)(stats.missRate() * 100);
data[5] = (int)stats.loadSuccessCount();
data[6] = (int)stats.loadExceptionCount();
data[7] = (int)(stats.loadExceptionRate() * 100);
data[8] = (int)stats.evictionCount();
data[9] = (int)stats.totalLoadTime() / 1000;
data[10] = (int)stats.averageLoadPenalty() / 1000;
其中CacheTest.getSingleCache()
是获取缓存的钩子。
这将使您可以对所有缓存统计信息进行遥测,如下面的屏幕截图所示: