【问题标题】:Performance Issues - Chutzpah Console.exe and TypeScript性能问题 - Chutzpah Console.exe 和 TypeScript
【发布时间】:2016-06-06 17:21:45
【问题描述】:

我在尝试使用我的 chutzpah.json 文件运行 chutzpah.console.exe 时遇到了一些性能问题。对于这个项目,我使用 TypeScript 并将 TypeScript 文件预编译为 .js 文件,然后再运行测试。我拥有的每个测试文件通常都会引用它所依赖的另一个 TypeScript 文件——这让 Visual Studio 很高兴,并且 Chutzpah 扩展也能正常工作。例如,我的 drawerBusiness.spec.ts 文件包含以下参考:

/// <reference path="../../../../app/business/documents/drawerBusiness.ts"/>

我的 chutzpah.json 文件如下:

{
  "Compile": {
    "Mode": "External",
    "Extensions": [ ".ts" ],
    "ExtensionsWithNoOutput": [ ".d.ts" ]
  },
  "Framework": "jasmine",
  "TestHarnessReferenceMode": "Normal",
  "TestHarnessLocationMode": "SettingsFileAdjacent",
  "References": [
    { "Path": "./lib/jquery/jquery.js" },
    { "Path": "./lib/angular/angular.js" },
    { "Path": "./lib/angular-mocks/angular-mocks.js" },
    { "Path": "./lib/jasmine-jquery/jasmine-jquery.js" },
    { "Path": "./lib/underscore/underscore.js" },
    { "Path": "./lib/angular-bootstrap/ui-bootstrap-tpls.js" },
    { "Path": "./tests/dependencies.js" }
  ],
  "Tests": [
    { "Include": "*/tests/specs/*.ts", "ExpandReferenceComments":  "true" }
  ]
}

从上面可以看出,我需要加载一些外部库。我假设这些被加载一次然后用于每个测试?

当我使用纯 JavaScript 时,这种配置速度非常快。它在 Visual Studio 中并通过运行 chutzpah.console.exe 中的测试很快完成。但是,由于我已经切换到 Chutzpah,所以测试要慢得多:

Tests complete: 263
=== 263 total, 0 failed, took 74.64 seconds ===

这些结果在我们的构建机器上更糟,而且它正在超时。似乎每个运行的规范文件之间存在巨大的延迟,我认为这导致了整体缓慢 - 一旦规范文件开始运行,它会在百分之一秒内完成。有没有人知道什么可能配置不正确?

【问题讨论】:

  • 经过进一步测试,我什至尝试删除“编译”部分并使用纯 JavaScript 文件,但我仍然遇到速度变慢的情况。我相当肯定为每个文件创建的测试工具会导致问题,并且我相信在升级到支持非 JS 文件的 Chutzpah 版本后会出现减速。但也许我只是在配置上做错了。

标签: performance typescript chutzpah


【解决方案1】:

您可以尝试以下几件事来帮助了解该问题的根源:

  1. 您能否尝试在您的 chutzpah.json 文件中启用 "EnableTestFileBatching": true 看看是否有帮助?如果您有许多测试文件,并且此设置告诉 chutzpah 将它们批处理到一个工具中,可能会出现缓慢。

  2. 能否提供 /trace 选项的输出,以便我查看所有时间?

  3. 你能提供一个我可以在本地运行的重现吗?

【讨论】:

  • 1.) EnableTestFileBatching 允许它在大约 5 秒内运行,但我必须解决我的冲突,因为它并没有真正单独运行测试。但是,由于我使用的是 Angular,我应该仍然能够隔离这些测试。我会试试这个。
  • 2. /trace 选项显示每个测试运行时间为 0.02-.03 秒。所以,我认为个人线束的创造是需要所有时间的。我认为 EnableTestFileBatching 对我来说可能是唯一好的解决方案。
  • 您是 100% 正确的,权衡是 EnableTestFileBatching 以隔离换取性能。您还可以嵌套 chutzpah.json 文件以允许更精细的批处理。
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 2016-05-28
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多