2024 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以了解更多有关该功能的信息。

0
data.fressian

问题
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中忽略校验和的旋钮。在写入端没有这样的旋钮。

校验和在脚注方法中使用。它们对于静态数据可能非常有用,但又可能与其他带外机制冗余。

可能的解决方案
缓冲以避免频繁重新计算校验和。
公开一个旋钮来控制是否启用写入校验和。这可能需要更改脚注。

2 个答案

0

由stu发表的评论:

确实有可能校验和的计算会影响性能。(如果是这样,另一个可能的解决方案就是完全从Fressian中移除校验和。)

尽管如此,我不想信任分析器。为了推动这一进程,我想看到在没有分析器参与的情况下,一些真实用例的基准测试。

0
参考:https://clojure.atlassian.net/browse/DFRS-2 (由gshayban报告)
...