public String[] getClassesInStats() { return sizeByClass.keys().toArray(String.class); }
private void printStats(Renderer renderer, int totalSize) { if (!Boolean.parseBoolean(System.getProperty("teavm.js.stats", "false"))) { return; } System.out.println("Total output size: " + STATS_NUM_FORMAT.format(totalSize)); System.out.println("Metadata size: " + getSizeWithPercentage(renderer.getMetadataSize(), totalSize)); System.out.println("String pool size: " + getSizeWithPercentage(renderer.getStringPoolSize(), totalSize)); ObjectIntMap<String> packageSizeMap = new ObjectIntHashMap<>(); for (String className : renderer.getClassesInStats()) { String packageName = className.substring(0, className.lastIndexOf('.') + 1); int classSize = renderer.getClassSize(className); packageSizeMap.put(packageName, packageSizeMap.getOrDefault(packageName, 0) + classSize); } String[] packageNames = packageSizeMap.keys().toArray(String.class); Arrays.sort(packageNames, Comparator.comparing(p -> -packageSizeMap.getOrDefault(p, 0))); for (String packageName : packageNames) { System.out.println("Package '" + packageName + "' size: " + getSizeWithPercentage(packageSizeMap.get(packageName), totalSize)); } }
Map<String, List<Integer>> sortedFeatures = new HashMap<>(); for (ObjectCursor<String> key : featureToIndex.keys()) { features.add(key.value); int i = featureToIndex.getOrDefault(key.value, -1);
/** * @return a Builder for proto serialization */ public ConcatVectorNamespaceProto.ConcatVectorNamespace.Builder getProtoBuilder() { ConcatVectorNamespaceProto.ConcatVectorNamespace.Builder m = ConcatVectorNamespaceProto.ConcatVectorNamespace.newBuilder(); // Add the outer layer features for (ObjectCursor<String> feature : featureToIndex.keys()) { ConcatVectorNamespaceProto.ConcatVectorNamespace.FeatureToIndexComponent.Builder component = ConcatVectorNamespaceProto.ConcatVectorNamespace.FeatureToIndexComponent.newBuilder(); component.setKey(feature.value); component.setData(featureToIndex.getOrDefault(feature.value, -1)); m.addFeatureToIndex(component); } for (ObjectCursor<String> feature : sparseFeatureIndex.keys()) { ConcatVectorNamespaceProto.ConcatVectorNamespace.SparseFeatureIndex.Builder sparseFeature = ConcatVectorNamespaceProto.ConcatVectorNamespace.SparseFeatureIndex.newBuilder(); sparseFeature.setKey(feature.value); for (ObjectCursor<String> sparseFeatureName : sparseFeatureIndex.get(feature.value).keys()) { ConcatVectorNamespaceProto.ConcatVectorNamespace.FeatureToIndexComponent.Builder component = ConcatVectorNamespaceProto.ConcatVectorNamespace.FeatureToIndexComponent.newBuilder(); component.setKey(sparseFeatureName.value); component.setData(sparseFeatureIndex.get(feature.value).getOrDefault(sparseFeatureName.value, -1)); sparseFeature.addFeatureToIndex(component); } m.addSparseFeatureIndex(sparseFeature); } return m; }