问题标签 [benchmarking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails 应用程序/网络服务器基准测试
有谁知道最好的轻量级 Rails 基准测试工具?
我需要获取网络服务器的性能统计数据并模拟每个会话的身份验证 + 页面导航。我一直在尝试使用 httperf,但在应用程序中遇到 TamperingWithCookie 异常。
理想情况下,我想将应用程序和数据库与网络服务器基准测试分开,但有兴趣查看这些组合的结果。
sql - SSD 驱动器的 TPC 或其他数据库基准
很长一段时间以来,我一直对 SSD 驱动器感兴趣。我在数据库方面做了很多工作,并且我一直很想找到使用和不使用 SSD 驱动器执行的基准测试,例如 TPC-H。
在外面听起来好像会有一个,但不幸的是我没能找到一个。我找到的最接近答案的是这篇博文中的第一条评论。
http://dcsblog.burtongroup.com/data_center_strategies/2008/11/intels-enterprise-ssd-performance.html
当谈到企业中的 SSD 技术时,写这篇文章的人似乎是一个相当大的反对者,因为声称在混合读/写工作负载下性能不足。
还有其他基准,例如 this 和 this ,它们显示了绝对荒谬的数字。虽然我不怀疑他们,但我很好奇第一个链接中所说的评论者所说的是否属实。
无论如何,如果有人能找到在 SSD 上使用 DB 完成的基准测试,那就太好了。
python - SQLite 性能基准测试——为什么 :memory: 这么慢……只有磁盘的 1.5 倍?
为什么 :memory: 在 sqlite 中这么慢?
我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否有任何性能改进。基本上我想交换启动时间和内存以获得在应用程序过程中不会命中磁盘的非常快速的查询。
然而,下面的基准测试只给了我 1.5 倍的速度提升。在这里,我生成 1M 行随机数据并将其加载到同一个表的基于磁盘和内存的版本中。然后我在两个数据库上运行随机查询,返回大小约为 300k 的集合。我预计基于内存的版本会快得多,但如前所述,我只能获得 1.5 倍的加速。
我尝试了几种其他大小的数据库和查询集;:memory: 的优势似乎随着数据库中行数的增加而增加。我不确定为什么优势如此之小,尽管我有一些假设:
- 使用的表不够大(按行),无法制作:memory:一个巨大的赢家
- 更多的连接/表将使 :memory: 优势更加明显
- 在连接或操作系统级别进行了某种缓存,以便可以以某种方式访问先前的结果,从而破坏了基准
- 有某种我没有看到的隐藏磁盘访问正在进行(我还没有尝试过 lsof,但我确实关闭了 PRAGMAs 进行日志记录)
我在这里做错了吗?关于为什么 :memory: 没有产生几乎即时查找的任何想法?这是基准:
这是结果。请注意,对于相当广泛的查询大小,磁盘占用的内存大约是内存的 1.5 倍。
相对于磁盘,RAM 不应该几乎是即时的吗?这里出了什么问题?
编辑
这里有一些很好的建议。
我想对我来说主要的要点是**可能没有办法使 :memory:绝对更快,但是有一种方法可以使磁盘访问相对较慢。**
换句话说,基准测试充分测量了内存的实际性能,但没有测量磁盘的实际性能(例如,因为 cache_size pragma 太大或者因为我没有进行写入)。当我有机会时,我会弄乱这些参数并发布我的发现。
也就是说,如果有人认为我可以从内存数据库中挤出一些更快的速度(除了提高 cache_size 和 default_cache_size,我会这样做),我全神贯注......
java - 为什么对同一方法的两次连续调用会产生不同的执行时间?
这是一个示例代码:
}
这给出了以下输出: 100 'fOne' 花费的时间 ... 390273 100 'fTwo' 花费的时间 ... 118451 100 'fOne' 花费的时间 ... 53359 100 'fTwo' 花费的时间 ... 115936按任意键继续 。. .
为什么第一次执行相同的方法比连续调用需要更多的时间(明显更多)?
我尝试给-XX:CompileThreshold=1000000
命令行,但没有区别。
.net - 这种情况是有效的压力测试吗?
我有一个以不同方式处理客户端请求的服务器应用程序。
我想知道可以以最小的延迟为多少用户提供服务,所以我做了一个模拟用户请求的小型压力测试应用程序;同时另一个应用程序监视内存/CPU 利用率。
压力测试工具每秒创建线程,每个线程代表一个用户。如果压力测试由于资源不足而无法创建新线程,则会启动压力测试工具的新实例。
问题是,每个线程都会将每个请求的延迟和当前运行的线程数写入文件,因此这会导致 I/O 问题,因为几分钟后您有很多线程需要写入磁盘,这种行为也会在真实场景中不存在,因为客户端只请求数据。
当我想测量每个用户的最大延迟时,如何克服这个问题?
PS:
一些答案说要在不同的机器上运行以考虑网络延迟,这很好,这将是我目前的最终压力测试,我正在同一台服务器上进行此测试,以找出以最小延迟支持多少用户。
benchmarking - 给定以下基准数据,我如何以秒为单位测量响应时间?
我们最近从软件供应商那里得到了一些关于基准测试的数据,我认为我遗漏了一些明显的东西。
如果每秒有 17 个事务(我假设它们的意思是成功完成的请求),并且这些请求中的 1500 个可以在 5 分钟内处理,那么我如何获得单个用户的响应时间?这种事情甚至可以通过基准测试来实现吗?我从他们那里得到了很多其他数据,包括 apache 配置设置,但我不确定如何进行所有数学运算。
鉴于他们发送的服务器设置,我想知道如何推断用户响应时间。我查看了其他类似的基准测试,但我无法测量响应时间的请求。我需要在此处提供哪些其他数据才能获得此信息?
linux - Linux调度器的性能评估
我对 Linux 内核中的调度程序做了一些简单的更改。现在,我想看看这些变化如何影响系统的响应时间;换句话说,我想知道与原始调度程序相比,我的修改需要多长时间的上下文切换。一种直接的方法是使用时间戳计数器,然后使用 printk 输出上下文切换所花费的时间;显然,在这种情况下会打印出很多信息。所以我想知道是否还有其他更好的方法来测量 Linux 调度程序的响应时间?
谢谢
comparison - 评估数据挖掘工具的行业基准
我正在为一个项目寻找数据挖掘工具,与此一致,我在 SO 中发布了另一篇文章。我目前正在研究不同的工具,并且想知道是否存在任何行业基准来评估不同的数据挖掘工具,以便我可以参考它来更好地评估工具。
请让我知道是否存在任何此类基准,或者归结为选择适合您需求的工具...
干杯
iphone - 基准 UIView drawRect: 方法
我正在用 Objective-C 编写一个 iPhone 应用程序,它在视图中使用了一些自定义绘图,我想对我的代码的各种修订进行基准测试,看看有什么真正有帮助。我打算通过设置一个新的应用程序来做到这一点,将我的自定义绘图代码添加到视图的 drawRect: 方法中,然后,在视图控制器的 for 循环中,发送[UIView setNeedsDisplay]
大量时间并计时需要多长时间去完成。然而,这些setNeedsDisplay
调用似乎被缓存了,所以即使我在 for 循环中调用它 1000 次,该drawRect:
方法也只被调用一次。另外,我尝试直接调用 drawRect: 但我需要一个图形上下文来进行一些绘图,并且当我不使用setNeedsDisplay:
UIGraphicsGetCurrentContext() 时不会给我一个上下文。
有什么建议么?
谢谢,
凯尔
benchmarking - 为什么一个 CPU 内核会比其他内核运行得慢?
我正在对一个大型科学应用程序进行基准测试,发现在相同的输入下它有时会慢 10%。经过大量搜索,我发现只有当它在我的四核 CPU 的核心 #2 上运行时才会出现减速(特别是运行在 2.4 GHz 的 Intel Q6600)。该应用程序是单线程的,大部分时间都花在 CPU 密集型矩阵数学例程中。
现在我知道一个内核比其他内核慢,我可以通过将处理器亲和性设置为所有运行的同一内核来获得准确的基准测试结果。但是,我仍然想知道为什么一个核心更慢。
我尝试了几个简单的测试用例来确定 CPU 的慢速部分,但测试用例的运行时间相同,即使在慢速核心 #2 上也是如此。只有复杂的应用程序表现出放缓。以下是我尝试过的测试用例:
浮点乘法和加法:
/li>三角函数:
/li>整数加法:
/li>尝试使 L2 缓存未命中时的内存复制:
/li>
问题:为什么一个 CPU 内核会比其他内核慢,以及 CPU 的哪一部分导致了速度变慢?
编辑:更多测试显示了一些Heisenbug行为。当我明确设置处理器关联时,我的应用程序不会在核心 #2 上减慢速度。但是,如果它选择在没有明确设置处理器亲和性的情况下在核心 #2 上运行,则应用程序的运行速度会慢约 10%。这就解释了为什么我的简单测试用例没有表现出同样的减速,因为它们都明确地设置了处理器亲和性。因此,看起来有一些进程喜欢在核心#2 上运行,但如果设置了处理器亲和性,它就会不受干扰。
底线:如果您需要在多核机器上对单线程程序进行准确的基准测试,请确保设置处理器亲和性。