데이터베이스에 예외를 기록해야합니다. 데이터베이스 API 상태 값을 ByteBuffer 또는 byte [] 배열로 전달할 수 있습니다. 그래서 어느 것이 더 효율적입니까?예외의 스택 추적을 byte [] 배열 또는 ByteBuffer (Java)로 변환하는 것이 더 효율적입니까?
private final static ByteBuffer getThrowableStackTraceByteBuffer(Throwable throwable) {
ByteArrayOutputStream throwableStackTraceByteArrayOutputStream = new ByteArrayOutputStream();
throwable.printStackTrace(new PrintStream(throwableStackTraceByteArrayOutputStream));
ByteBuffer throwableByteBuffer = ByteBuffer.wrap(throwableStackTraceByteArrayOutputStream.toByteArray());
return throwableByteBuffer;
}
private final static byte[] getThrowableStackTraceBytes(Throwable throwable) {
StringWriter throwableStackTraceStringWriter = new StringWriter();
throwable.printStackTrace(new PrintWriter(throwableStackTraceStringWriter));
return throwableStackTraceStringWriter.toString().getBytes();
}
대는 나는 데이터베이스 방법으로 전달되는 후 처리하는 특히, 내가의 ByteBuffer를 사용한다면 전체 작업을보다 효율적으로 할 것이라 생각합니다. 내가 맞습니까?
는 (특히, 나는 Hypertable에 예외를 로그인해야하고는 드리프트 자바 API를 사용합니다.)
차이점을 벤치마킹 해 보았습니까? 애플리케이션에서 병목 현상이 있습니까? –
왜 바이트를 사용하려고합니까? 스택 추적을 자연스럽게 문자열로 저장하지 않겠습니까? 또한 효율성이 중요한 이유는 무엇입니까? 효율성에 대한 예외가 충분 해지면 문제가 커집니다. 그것들을 대신 해결하십시오. –
아직 병목 현상이나 효율성 문제가 없습니다. 나는 이제 server-app을 작성하기 시작했다. 모든 예외를 올바르게 기록하는 것은 좋은 습관 일뿐입니다. – ikevin8me