forked from KNEMC/KLALB
优化代码,性能暴涨
This commit is contained in:
@@ -104,11 +104,11 @@ public class Debuger extends Thread {
|
||||
for(int d=0;d<tmp.size();d++){
|
||||
|
||||
Entry<List<StackTraceElement>, Object[]>elements=tmp.get(d);
|
||||
if(((Thread)(elements.getValue()[1])).getName().startsWith("SocketBridge A->B")){
|
||||
/*if(((Thread)(elements.getValue()[1])).getName().startsWith("SocketBridge A->B")){
|
||||
|
||||
}else{
|
||||
continue;
|
||||
}
|
||||
}*/
|
||||
List<StackTraceElement> k=elements.getKey();
|
||||
StringBuilder sb=new StringBuilder();
|
||||
for(int d2=0;d2<k.size();d2++){
|
||||
|
||||
@@ -3,29 +3,87 @@ package org.kne.debug;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
public class TimeDebugger {
|
||||
private static final ExecutorService exct=Executors.newSingleThreadExecutor();
|
||||
Map<String,Long> l=new LinkedHashMap<String,Long>();
|
||||
private Map<String,Long> timeMap=new LinkedHashMap<String,Long>();
|
||||
private Lock timeLock=new ReentrantLock();
|
||||
long tmp=-1;
|
||||
|
||||
public void putTime(String name){
|
||||
|
||||
timeLock.lock();
|
||||
try{
|
||||
long v=System.nanoTime();
|
||||
if(tmp==-1){
|
||||
l.put(name, 0l);
|
||||
timeMap.put(name, 0l);
|
||||
}else{
|
||||
l.put(name, v-tmp);
|
||||
timeMap.put(name, v-tmp);
|
||||
}
|
||||
tmp=v;
|
||||
}finally {
|
||||
timeLock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, Long> getTimeMap() {
|
||||
return timeMap;
|
||||
}
|
||||
|
||||
public void print(){
|
||||
exct.execute(()->{
|
||||
System.err.println(l+"(ns)");
|
||||
timeLock.lock();
|
||||
|
||||
try{
|
||||
StringBuilder sbdr=new StringBuilder();
|
||||
sbdr.append('{');
|
||||
for (Iterator<Entry<String, Long>> iterator = timeMap.entrySet().iterator(); iterator.hasNext();) {
|
||||
Entry<String, Long> type = (Entry<String, Long>) iterator.next();
|
||||
sbdr.append(type.getKey()).append('=').append(type.getValue());
|
||||
if(iterator.hasNext()) {
|
||||
sbdr.append(',');
|
||||
}
|
||||
}
|
||||
sbdr.append("}(ns)");
|
||||
System.out.println(sbdr.toString());
|
||||
}finally {
|
||||
timeLock.unlock();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void printWithTimeFilter(long nanos){
|
||||
exct.execute(()->{
|
||||
boolean b=false;
|
||||
timeLock.lock();
|
||||
|
||||
try{
|
||||
StringBuilder sbdr=new StringBuilder();
|
||||
sbdr.append('{');
|
||||
for (Iterator<Entry<String, Long>> iterator = timeMap.entrySet().iterator(); iterator.hasNext();) {
|
||||
Entry<String, Long> type = (Entry<String, Long>) iterator.next();
|
||||
if(type.getValue()>=nanos) {
|
||||
b=true;
|
||||
}
|
||||
sbdr.append(type.getKey()).append('=').append(type.getValue());
|
||||
if(iterator.hasNext()) {
|
||||
sbdr.append(',');
|
||||
}
|
||||
}
|
||||
sbdr.append("}(ns)");
|
||||
if(b)
|
||||
System.out.println(sbdr.toString());
|
||||
}finally {
|
||||
timeLock.unlock();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user