这是一个常见的问题,但是很难找到答案。我想衡量[Web服务器95%响应时间| API调用|算法性能|磁盘I / O |随你 ]。但是,您知道,这是很多数据,我不想存储它,因为它用于生产中。另外,我不想花很多CPU时间来计算软件的速度。
如果您寻找答案,将会看到许多关于古老算法的参考,这些古老算法将大量数据存储在箱中或保留大量随机样本数据。常见的结果包括P-square和binmedian,并且注意到很难找到任何像样的实现,因为尽管通常建议它们都是垃圾,而且没有人使用它们。
您还将找到无法实现的巧妙答案,因为缺少一半解释。也许如果您是统计学专业的人,您就会了解this。
那么我可以用来获取便宜的性能统计信息吗?请提供算法和源代码。
答案 0 :(得分:0)
寻找算法意味着进入学术界,因此了解问题的正确名称将很有帮助。我们正在寻找Streaming Algorithm,可能是分位数流,尽管您可能还需要其他统计信息。搜索该短语,您将获得更多有根据的答案。
一个简单的答案是this paper,这是亚马逊和学术界之间的合作,描述了截至2007年的技术水平。它提供了Greenwald-Khanna(GK)和Q-Digest算法的高级视图。您实际上可以在库中找到这些算法。 This library具有易于使用的C ++和JS实现。 Intel Math Kernel Library实现了Zhang 2007。
虽然sengelha库看起来易于使用且足以满足大多数需求,但自2007年以来,世界在不断发展。paper from this year(Amazon,Yahoo和Academia)描述了已实施的“ lazy kll”算法在Data Sketches库(C ++,Java,Python)here中。
此信息应该足以让您从软件甚至分布式软件生成分位数数据,我希望其他人能提供更好的答案。