gpt4 book ai didi

java - 将异常的堆栈跟踪转换为 byte[] 数组或 ByteBuffer (Java) 是否更有效?

转载 作者:行者123 更新时间:2023-11-29 10:04:42 24 4
gpt4 key购买 nike

我需要将异常记录到数据库中。数据库 API 声明我可以将值作为 ByteBuffer 或 byte[] 数组传递。那么哪个效率更高呢?

private final static byte[] getThrowableStackTraceBytes(Throwable throwable) {
StringWriter throwableStackTraceStringWriter = new StringWriter();
throwable.printStackTrace(new PrintWriter(throwableStackTraceStringWriter));
return throwableStackTraceStringWriter.toString().getBytes();
}

对比

private final static ByteBuffer getThrowableStackTraceByteBuffer(Throwable throwable) {
ByteArrayOutputStream throwableStackTraceByteArrayOutputStream = new ByteArrayOutputStream();
throwable.printStackTrace(new PrintStream(throwableStackTraceByteArrayOutputStream));
ByteBuffer throwableByteBuffer = ByteBuffer.wrap(throwableStackTraceByteArrayOutputStream.toByteArray());
return throwableByteBuffer;
}

我认为如果使用 ByteBuffer 整体操作会更有效率,尤其是在将它传递到数据库方法之后进行处理时。我说得对吗?

(具体来说,我需要将异常记录到 Hypertable 中,它使用 Thrift Java API。)

最佳答案

最有效的选择是将两者结合起来。

private final static byte[] getThrowableStackTraceBytes(Throwable throwable) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
throwable.printStackTrace(new PrintStream(baos));
return baos.toByteArray();
}

尽管我怀疑将其写入数据库的成本会高很多倍。

关于java - 将异常的堆栈跟踪转换为 byte[] 数组或 ByteBuffer (Java) 是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com