代码之家  ›  专栏  ›  技术社区  ›  Nix

设计库性能比较测试

  •  6
  • Nix  · 技术社区  · 14 年前

    我准备对各种货架上的产品进行一系列性能比较。

    我需要做什么才能在测试中显示可信度?我如何设计我的基准测试,使他们是体面的?

    我也对测试的实际设计有兴趣。在不影响测试的情况下加载数据的方法(海森堡不确定度原理),或监控的方法。。。等

    3 回复  |  直到 14 年前
        1
  •  3
  •   nithins    14 年前

    如果不知道您要评估的是哪种“现成”产品,那么回答这个问题就有点棘手。您是否在寻找用户界面响应能力、吞吐量(例如电子邮件、事务/秒)、启动时间等—所有这些都有不同的标准来衡量您应该跟踪什么,以及不同的测试或评估工具。但要回答您的一些一般性问题:

    1. 信誉-这很重要。试着确保你所测量的任何东西都没有什么变化。利用对同一场景进行多次运行的技术,去除异常值(即最低值和最高值),并评估平均值/最大值/最小值/中值。如果您正在进行某种吞吐量测试,请考虑让它长时间运行,这样您就有了一个好的样本集。例如,如果您正在查看类似Microsoft Exchange的内容,因此正在使用它们的性能计数器,请尝试确保经常采样(每秒一次或每隔几秒一次),并让测试运行20分钟左右。再次切掉前几分钟和最后几分钟,以消除任何启动/关闭噪音。

    2. xperfinfo 并利用内核中内置的事件。如果您使用的是perfmon,请不要在系统中充斥您不关心的无关计数器。如果你在做一些长时间运行的测试,那就缩短你的采样间隔。

    在设计测试时,请记住可重复性。如果您正在进行某种微基准类型的测试(例如perf unit test),那么让您的基础结构支持以完全相同的方式运行相同的操作n次。如果您正在驱动UI,请尝试不实际地驱动鼠标,而是使用底层辅助功能层(MSAA、UIAutomation等)以编程方式直接点击控件。

    好好享受!

        2
  •  1
  •   jmservera    14 年前

    你的问题很有意思,但有点含糊,因为不知道要测试什么就不容易给你一些线索。

    您可以从许多不同的角度测试性能,然后,根据库的用途或目标,您应该尝试一种或另一种方法;我将尝试列举一些您可能需要考虑的度量方法:

    • 它或您的软件将使用 多线程上下文中的库 那你就得用 许多不同的处理器和 要查看的多处理器配置
    • 启动时间:its 重要性取决于 你会用图书馆吗 所制造产品的性质 使用它(客户端、服务器)。
    • 响应时间:对此不采取任何措施 第一次执行,尝试执行 系统诊断秒表可以是 非常有用。
    • 记忆 消费:分析增长, 进一步测量 正在创建和处理的对象。
    • 也很重要。
    • 网络:如果 图书馆利用网络资源 不同的带宽和延迟 配置,有软件可以
    • 数据: 尝试创建许多不同的测试 试图覆盖的数据包 例如:一大堆原始数据, 块,一个长的迭代

    工具:

    • System.Diagnostics.Stopwatch :对基准方法调用至关重要
    • Performance counters :只要可用,它们就非常有用,可以了解软件内部发生的情况,允许您监视软件而不影响其性能。
    • 探查器:市场上有一些好的内存和性能探查器,但是正如您所说的,它们总是影响度量。它们有助于发现软件中的瓶颈,但我不认为您可以将它们用于比较测试。
        3
  •  0
  •   Ian Ringrose    14 年前

    如果你真的在做匹配日志记录,那么你可能需要索引你的日志文件,这样你就可以找到你需要的日志条目,在这一点上你没有做标准的日志记录。