性能测量的建模分布

2024-03-03

您如何对重复的现实生活性能测量的分布进行数学建模 - “现实生活”意味着您不仅仅是循环有问题的代码,而且它只是在典型用户场景中运行的大型应用程序中的一个简短片段?

我的经验表明,平均执行时间通常会出现峰值,可以使用高斯分布对其进行充分建模。此外,还有一个包含异常值的“长尾”——通常是平均时间的倍数。 (考虑到导致首次执行处罚的因素,这种行为是可以理解的)。

My goal是对合理反映这一点的聚合值进行建模,并且可以根据聚合值进行计算(就像高斯分布一样,根据 N、值之和和平方和计算 mu 和 sigma)。换句话说,重复次数是无限的,但内存和计算要求应最小化。

正态高斯分布无法正确地对长尾进行建模,并且即使只有极小比例的异常值,平均值也会产生很大的偏差。

我在寻找想法,特别是如果之前已经尝试过/分析过的话。我检查了各种分布模型,并且我认为我可以解决一些问题,但我的统计数据已经生锈,我最终可能会得到一个夸大的解决方案。哦,完整的收缩包装解决方案也很好;)

其他方面/想法:有时您会得到“两个驼峰”分布,这在我的场景中是可以接受的,单个 mu/sigma 覆盖这两个分布,但理想情况下可以单独识别。

推断这一点,另一种方法是“浮动概率密度计算”,仅使用有限的缓冲区并自动调整范围(由于长尾,垃圾箱可能不会均匀间隔) - 没有找到任何东西,但有一些关于分布的假设原则上应该是可能的。


Why(既然有人问了)-

对于复杂的流程,我们需要做出保证,例如“只有0.1%的运行超过3秒的限制,平均处理时间为2.8秒”。独立代码段的性能可能与正常的运行时环境有很大不同,涉及不同级别的磁盘和网络访问、后台服务、一天内发生的计划事件等。

这可以通过累积来轻松解决all数据。然而,为了在生产中积累这些数据,产生的数据需要受到限制。对于孤立的代码片段的分析,高斯偏差加上首次运行惩罚是可以的。这对于上面找到的发行版不再适用。

[edit]我已经得到了非常好的答案(最后 - 也许 - 一些时间来解决这个问题)。我正在开始悬赏以寻找更多的意见/想法。


通常,当您的随机值只能为正时,对数正态分布是对其建模的好方法。也就是说,您获取每个测量值的日志,并假设其呈正态分布。

如果你愿意,你可以认为它有多个驼峰,即具有不同均值的两个法线的总和。估计这些参数有点棘手,因为您可能必须为每个测量估计其属于每个驼峰的概率。这可能超出了你的意愿。

对数正态分布非常方便且表现良好。例如,你不处理它的平均值,你处理它的几何平均值,它与它的中位数相同。

顺便说一句,在药理学建模中,对数正态分布无处不在,可以对血容量、吸收率和消除率、体重等进行建模。

添加:如果您想要所谓的浮动分布,则称为经验分布或非参数分布。为了对此进行建模,通常将测量值保存在排序数组中。然后很容易选出百分位数。例如,中位数是“中间数”。如果您有太多测量结果需要保存,则可以在获得足够的测量结果以获得大致形状后进行某种分箱。

添加:有一种简单的方法可以判断分布是否为正态(或对数正态)。获取测量日志并将它们放入排序数组中。然后生成 QQ 图(分位数-分位数)。为此,请生成与样本一样多的正态随机数,并对它们进行排序。然后绘制点,其中 X 是正态分布点,Y 是对数样本点。结果应该是一条直线。 (生成正态随机数的一种非常简单的方法是将 +/- 0.5 范围内的 12 个均匀随机数相加。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能测量的建模分布 的相关文章

  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • 由周期表元素形成的最大单词的算法

    我想为以下问题场景编写一个算法 根据元素周期表元素的名称 找到可以组成的最大单词 符号如Na Ne等应被视为单个元素 这是在一家知名公司的求职面试中被问到的 有人可以帮我解决这个问题吗 我认为更好的方法是检查字典中的每个单词 看看是否可以从
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • C# 中单个 & 符号的第二个含义是什么?

    我在 C 中使用了单个与号 来表示 检查second条件语句即使第一个是false 但以下似乎是不同的意思 of 总而言之 谁能解释一下如何i 1在下面的例子中有效吗 List
  • 数组中连续元素的最大乘积

    我在现场面试的时候被问到了这个算法问题 由于没有要求我签署保密协议 我将其发布在这里寻求答案 给定一个数组REAL不包含 0 的数字 找到产生最大乘积的连续元素 该算法应在线性时间内运行 我考虑过以下方法 使用两个数组 第一个是利用DP思想
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 为什么对于小数组,for-of 循​​环比标准 for 循环快,而对于大数组则慢?

    在 JavaScript 中 我注意到 ES6for of循环的性能与传统的有很大不同for start stop step loop 基准 const n 10000 const arr Array n fill map e i gt i
  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 在 SQL Server 中通过标准差消除异常值

    我试图通过标准差消除 SQL Server 2008 中的异常值 我只想要特定列中包含该列平均值的 1 标准差范围内的值的记录 我怎样才能做到这一点 如果您假设事件呈钟形曲线分布 则只有 68 的值与平均值相差 1 个标准差以内 95 的值
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 页面上首次调用 Url.Action 速度很慢

    我有一个相当简单的 ASP MVC 视图的性能问题 这是一个登录页面 应该几乎是即时的 但需要大约半秒钟 经过大量挖掘后 问题似乎出在第一个调用上Url Action 大约需要 450 毫秒 根据迷你分析器 http miniprofile
  • 降低Python中的浮点精度以提高性能[重复]

    这个问题在这里已经有答案了 我正在树莓派上使用 python 我使用互补滤波器从陀螺仪中获得更好的值 但它消耗了太多树莓派的电量 大约为 70 我认为可以通过降低浮点精度来提高性能 现在 结果大约有 12 位小数 这超出了我的需要 有什么办
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • numpy polyfit 中使用的权重值是多少以及拟合误差是多少

    我正在尝试对 numpy 中的某些数据进行线性拟合 Ex 其中 w 是该值的样本数 即对于点 x 0 y 0 我只有 1 个测量值 该测量值是2 2 但对于这一点 1 1 我有 2 个测量值 值为3 5 x np array 0 1 2 3

随机推荐

  • 如何获取 Xamarin.Android 的 Mono VM 的堆快照?

    背景 我正在尝试追踪 Xamarin Android 应用程序中的内存泄漏 使用 DDMS 和 Eclipse Memory Profiler 我能够查看哪些对象处于活动状态 当试图跟踪是什么让它们保持活力时 GC Root 我只看到 本机
  • 如何删除前导和尾随空格?

    我在用着awk gsub t t print in txt gt out txt删除前导和尾随空格 问题是输出文件实际上有尾随空格 所有行的长度相同 它们都用空格填充 我缺少什么 UPDATE 1 该问题可能是由于尾随空格不是 正常 空格而
  • Nuxt,转换不适用于子路由(使用 NuxtChild 显示)

    我无法为我的子路线进行转换 我有以下页面 pages child id vue child vue index vue 在索引和任何子路由之间导航都会触发转换 但是当从一个子路由导航到另一子路由时 不会发生转换 注意有静态路由 child和
  • extern 与 c 中变量的全局定义

    我有以下我感兴趣的源代码 include
  • 从 XML 结束标记填充数组

    我正在尝试创建一个字段名称数组 以便稍后在脚本中使用 正则表达式让我大吃一惊 我已经很久没有写代码了 字段名称嵌入在 XML 标记中 因此我想可以从第一行数据的结束标记中提取它们 我看不到如何正确填充数组 任何人都可以为我提供一些启示吗 m
  • 万向节锁是怎么发生的?

    所以我在网上搜索 我在想象如何 发生万向节锁定 根据我所看到的 当两个或多个轴对齐失去一定的自由度时就会发生这种情况 但我无法想象这些轴将如何开始对齐 我的意思是 当我绕 x 轴旋转对象时 例如 y 轴和 z 轴是否不会随 X 轴旋转以保持
  • 使用 PyQt5 将 qDebug 输出重定向到文件

    我使用 python2 7 Qt5 5 和 PyQt5 实现了一个应用程序 我使用Python记录器工作logging 模块 日志消息都发送到 stderr 和日志文件 但是 Qt 日志消息仅出现在 stderr 中 我找不到将它们重定向到
  • 带有标记和线条的传单

    我将 leafletjs 与 geojson 一起使用 但我无法同时使用标记绘制折线 所以我的解决方案是先绘制折线 然后添加标记 我认为这不是一个好的方法 那么还有其他解决方案吗 这是我的代码 function DrawLine mymap
  • SSRS独特的查找集函数

    我在用着Join Lookupset 查找返回序列号的唯一组值 这是我的功能 Join LookupSet Fields itemId Value Fields UseByDate Value Fields rackId Value Fie
  • Python:如何使用 BeautifulSoup 模拟点击

    我不想使用 selenium 因为我不想打开任何浏览器 该按钮会触发 Javascript 方法来更改页面中的某些内容 我想模拟按钮单击 以便我可以从中获取 输出 示例 不是按钮实际执行的操作 我输入一个名字 例如 John 按下按钮 它会
  • 如何在 Action 类之外将错误消息从 Struts2 发布到 HTML

    我有一个注册程序 当我在数据库中插入一条记录时 我将实例化一个类并调用该方法insert 当我插入相同的记录时 当然会出现重复数据错误和大量错误消息 我想捕捉它try and catch 我能做到 但是 我不知道如何将消息显示到 JSP 据
  • 提高 jQuery 模板性能

    Update 显然 jQuery 模板可以被编译 并且它有助于提高模板的性能if 语句 shown here http jsperf com complex template vs concat 4 但如图所示here http jsper
  • MFC> 将对话框连接到对话框类

    我在现有的资源文件中定义了一个新对话框及其控件 我还创建了一个新文件 它将处理从此对话框生成的事件 但我不确定如何连接这两者 是声明enum IDD IDD NEW DIALOG 连接两者所需的一切 或者我们应该添加一些其他声明 在 MFC
  • 网络调用 /.well-known/openid-configuration/ 和 /.well-known/openid-configuration/jwks

    I have 身份服务器4 具有 OpenId Connect 和混合流的 Mvc 应用程序 WebApi应用程序 假设用户已经获得带有 id token 和访问令牌的 cookie 然后他从 mvc 应用程序调用一个操作 var clie
  • 从列表列表创建 pandas 数据框,但有不同的分隔符

    我有一个列表列表 1 Toy Story 1995 Animation Children s Comedy 2 Jumanji 1995 Adventure Children s Fantasy 3 Grumpier Old Men 199
  • h5py 不遵守分块规范?

    问题 我有现有的 netCDF4 文件 大约 5000 个 通常形状为 96x3712x3712 数据点 float32 这些文件的第一维是时间 每天一个文件 第二维和第三维是空间维 目前 在第一维上制作切片 即使是部分切片 会花费大量时间
  • Angular RouterLink queryParamsHandling 处理可选参数

    是否有一种干净的方法可以将当前可选的 queryParams 与模板中链接上的附加可选 queryParam 合并 当前网址 search brand Trek 所需的转到链接 search brand Trek start 1 start
  • 获取Web层之外的当前Principal

    我有以下 ntier 应用程序 MVC gt 服务 gt 存储库 gt 域 我正在使用表单身份验证 在 MVC 层之外使用 Thread CurrentPrincipal 来获取应用程序当前登录的用户是否安全 或者我应该使用 HttpCon
  • 使用 tampermonkey 获取与页面相关的所有请求的标头

    我正在尝试编写一个 tampermonkey 脚本 该脚本将 document location 和标题收集在字典中 谷歌搜索了一下 发现我应该使用某种全局变量 但它没有按我想要的方式工作 这是脚本 UserScript name My F
  • 性能测量的建模分布

    您如何对重复的现实生活性能测量的分布进行数学建模 现实生活 意味着您不仅仅是循环有问题的代码 而且它只是在典型用户场景中运行的大型应用程序中的一个简短片段 我的经验表明 平均执行时间通常会出现峰值 可以使用高斯分布对其进行充分建模 此外 还