欢迎!请参阅 关于 页面以了解更多有关该功能的信息。
问题 Java 虚拟机分析器表示实现的校验和是一个显著的瓶颈。
原因 impl.RawOutput 使用CheckedOutputStream包装提供的OutputStream。每次写入一个rawInt时,CheckedOutputStream都会调用其校验和以更新自己。
Adler32的update方法是本地的,这可能不是问题所在。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/zip/Adler32.java#91
data.fressian的读取端已经公开了一个用于在RawInput中忽略校验和的旋钮。在写入端没有这样的旋钮。
校验和在脚注方法中使用。它们对于静态数据可能非常有用,但又可能与其他带外机制冗余。
可能的解决方案 缓冲以避免频繁重新计算校验和。公开一个旋钮来控制是否启用写入校验和。这可能需要更改脚注。
由stu发表的评论:
确实有可能校验和的计算会影响性能。(如果是这样,另一个可能的解决方案就是完全从Fressian中移除校验和。)
尽管如此,我不想信任分析器。为了推动这一进程,我想看到在没有分析器参与的情况下,一些真实用例的基准测试。