我一直想弄清楚我的统计知识。统计数据似乎有用的一个领域是分析代码。我之所以这么说,是因为分析几乎总是让我试图从大量数据中提取一些信息。
在统计数据中是否有任何主题可以让我更好地理解分析器输出?如果您可以指向一本书或其他资源,以帮助我更好地理解这些科目,那么奖励积分。
答案 0 :(得分:3)
我不确定有关统计数据的书籍在分析时是否有用。运行探查器应该为您提供功能列表以及每个功能所花费的时间百分比。然后,您可以查看占用率最高的那个,看看您是否可以以任何方式对其进行优化。重复,直到你的代码足够快。我觉得标准偏差的范围不大,或者卡平方在那里。
答案 1 :(得分:3)
统计数据既有趣又有趣,但对于性能调优,您不需要它。 Here's an explanation why,但一个简单的类比可能会提出这个想法。
性能问题就像埋在一英亩积雪下的物体(实际上可能是多个连接的物体),你试图通过用棍子随机探测来找到它。如果你的棍子击中它几次,你已经找到它 - 它的确切尺寸并不那么重要。 (如果你真的想要更好地估计它有多大,可以采取更多探头,但这不会改变它的尺寸。)在你发现它之前你需要探测雪的次数取决于它的面积有多大。它下面的雪。
一旦找到它,你就可以把它拿出来。现在积雪较少,但雪下可能还有更多的物体。因此,通过更多探测,您也可以找到并删除它们。通过这种方式,您可以继续前进,直到找不到任何可以移除的内容。
在软件中,雪是时间,探测是采用调用堆栈的随机时间样本。通过这种方式,可以找到并删除多个问题,从而产生large speedup factors。
统计数据与此无关。
答案 2 :(得分:3)
我所知道的关于分析的内容就是我刚才在维基百科中读到的内容:-)但我对统计数据了如指掌。剖析文章提到了抽样数据的抽样和统计分析。显然,统计分析将能够使用这些样本来制定一些关于绩效的统计报表。假设你有一些性能指标,m,你可以测量1000次。让我们也说你了解了创造m值的基础过程。例如,如果m是一组随机变量的SUM,则m的分布可能是正常的。如果m是一堆随机变量的PRODUCT,则分布可能是对数正态分布。等等...
如果您不了解基础分布,并且想要对比较性能做一些陈述,则可能需要所谓的非参数统计。
总的来说,我建议任何关于统计推断的标准文本(DeGroot),一个涵盖不同概率分布的文本及其适用的地方(黑斯廷斯和孔雀),以及一本关于非参数统计的书(Conover) 。希望这可以帮助。
答案 3 :(得分:2)
答案 4 :(得分:1)
我认为在这种情况下要理解的最重要的统计概念是Amdahl's law。虽然在并行化的背景下通常提到,但Amdahl定律具有更一般的解释。以下是维基百科页面的摘录:
从技术上讲,法律是关注的 从一个可以实现的加速 改进计算 影响比例P 计算改进的地方 加速度为S.(例如,如果是 改善可以加快30%的速度 计算,P为0.3;如果 改善使受影响的部分 两倍的速度,S将是2.)Amdahl的 法律规定,整体加速 应用改进将是
答案 5 :(得分:1)
我认为一个与统计和分析相关的概念(你的原始问题)非常有用并且被某些人使用(你不时会看到这种技术)是在做“微观分析”时:许多程序员会集会和大喊“你不能微观形象,微观分析根本不起作用,太多事情会影响你的计算”。
然而,只需运行 n 次分析,并且只保留 x %的观察值,即中位数周围的值,因为中位数是“稳健的统计量”(与不受异常值影响的平均值相反(异常值恰好是您在进行此类分析时不想考虑的值)。
对于想要对其代码进行微观分析的程序员来说,这绝对是一种非常有用的统计技术。
答案 6 :(得分:-1)
如果您使用PHP应用MVC编程方法,那么您需要分析:
Application: Controller Setup time Model Setup time View Setup time Database Query - Time Cookies Name - Value Sessions Name - Value