标签: performance-testing

我应该将 javascript 框架与我的应用程序捆绑在一起还是使用公共 CDN?

大约两三年前,我会把这个问题的答案总结为:

  • 将所有js编译到一个文件并缩小。
  • 将所有 css 编译到一个文件并缩小。
  • 异步加载外部脚本。
  • 将缓存控制标头设置为遥远的未来。
  • 指纹资产 URL 失效。
  • 使用您自己的 CDN。

现在应用程序似乎对 javascript 的依赖要重得多。我已经看到证据表明浏览器能够打开更多并行连接。

当前包含静态资产时 Web 性能的最佳实践是什么。

当我使用像 Angular、backbone 或 ember 这样的框架时,我应该将框架与我的应用程序捆绑在一起还是使用公共 CDN(例如 google https://developers.google.com/speed/libraries/)并仅捆绑我的应用程序代码?

javascript caching cdn performance-testing browser-cache

5
推荐指数
1
解决办法
1150
查看次数

如何在加特林中将会话变量从一个对象传递到另一个对象?

我正在提取对象 A 中的会话变量,并希望将其传递给对象 B,实现此目的的最佳方法是什么?

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec { session =>  
          val Count = session("Count").as[String].toInt
          val GroupName = SomeCustomFunc(Count)
        }
        .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group(GroupName){
      myChain
  }
}
Run Code Online (Sandbox Code Playgroud)

很确定看到答案后我会觉得很愚蠢,但到目前为止还没有成功。

回答:正如 Stephane 所建议的那样,通过 Session 效果很好:

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec(session => session.set("GroupName", SomeCustomFunc(session("Count").as[String].toInt)))
       .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group("${GroupName}"){
      myChain
  }
}
Run Code Online (Sandbox Code Playgroud)

scala performance-testing gatling

5
推荐指数
1
解决办法
7942
查看次数

如何在 Linux 上访问 GPU 寄存器

我正在尝试访问 AMD HD7000 系列卡上的 GPU 寄存器。我在 GPU 上连接了传感器,可以测量功率输入和消耗。我想开发一个 Linux C++ 应用程序来访问 GPU 的性能计数器,以根据 GPU 事件/操作评估功耗。我熟悉 C 和 C++,但不熟悉操作系统,并且不确定从哪里开始执行此类任务。

我有一个 PDF。AMD 15h 系列型号 30h-3Fh 的 Bios 和内核开发人员指南位于此处: https://support.amd.com/TechDocs/49125_15h_Models_30h-3Fh_BKDG.pdf

在链接文档的第 106 页中,描述了性能计数器。计数器在开始计数之前必须通过控制寄存器进行设置。在第 715 页,更详细地定义了计数器。

本文档没有列出内存偏移量,所以我查了开源的AMD Linux 4.14.12驱动程序。在/drivers/gpu/drm/amd/amdgpu/sid.h第1256行下,我发现了一个性能计数器地址0x2688:

#define CB_PERFCOUNTER0_SELECT0     0x2688
Run Code Online (Sandbox Code Playgroud)

http://elixir.free-electrons.com/linux/v4.14.12/source/drivers/gpu/drm/amd/amdgpu/sid.h#L1256

另外,起始和停止计数器整数从第 1457 行开始:

#define PERFCOUNTER_START     (23 << 0)
#define PERFCOUNTER_STOP      (24 << 0)
Run Code Online (Sandbox Code Playgroud)

http://elixir.free-electrons.com/linux/v4.14.12/source/drivers/gpu/drm/amd/amdgpu/sid.h#L1457

我假设 CB_PERFCOUNTER 定义是相关地址,并且可以用作 GPU 寄存器内存位置的偏移量。我在互联网上搜索了很多,并且有很多资源,尽管我很难评估每个资源是否有任何相关信息或任何步骤如何适合整个流程。任何直接的解释或对材料的引用将不胜感激。

c linux gpu performancecounter performance-testing

5
推荐指数
0
解决办法
437
查看次数

calculate Duration of The stepping Thread Group Execution in Jmeter

we are developing tool that's support For execute Jmx files in our Application currently i have issue with get the Execution Duration Time Based On Steping thread Group Values.

I got the Duration time by using Java

 public class SteppingThreadGroup {

    public static void main(String[] args) {
        int TotalThreads = 500,
            firstWait   = 25,
            thenStart_threads = 5,
            nextAdd_threads    = 25,                        
            threadsEverySeconds = 30,
            usingRamupSeconds = 5,  
            holdForSeconds =600,
            finallyStopThreads =25,
            down_threadsEverySeconds =25,
            //extra varaibles
            RemaingThreads =0, Duration=0;
        float RampDown =0,rampupTime …
Run Code Online (Sandbox Code Playgroud)

java jmeter formula performance-testing jmeter-plugins

5
推荐指数
0
解决办法
250
查看次数

我可以在 loadimpact/k6 脚本中传递自定义命令行参数吗?

正如官方 loadimpact/k6 文档中所示,我们能够执行 k6 脚本,如下所示:

k6 run github.com/loadimpact/k6/samples/http_get.js
Run Code Online (Sandbox Code Playgroud)

是否可以将自定义命令行参数传递到 k6 测试中?例如,假设我想传入一个 URL,然后从脚本中引用该 URL。

这是开箱即用的支持吗?如果是这样,我怎样才能做到这一点?

load-testing performance-testing k6

5
推荐指数
1
解决办法
7318
查看次数

使用 Jet Brain 的 dotTrace 进行分析时,约 85.5% 的本机代码?

每当我进行会话(采样和时间线)时,它都会说整个执行的 70-80% 被本机代码占用。这似乎有点可疑,不太确定我是否遇到了有问题的环境(因为由于客观限制,我正在使用该死的 Windows 7),或者它实际上很好?

截屏:

performance-testing dottrace windows-7

5
推荐指数
1
解决办法
2535
查看次数

Jmeter - 每个采样器请求之前的增量值

我在 jmeter 中有一些测试计划,其中有几个 SOAP 采样器,其中我附加到请求主体计数器值,并且我正在寻找如何在每个采样器请求之前增加计数器的方法。

通过下面的设置,jmeter 会按以下顺序执行请求:

First Request - with counter 1
Second Request - with counter 1
First Request - with counter 2
Second Request - with counter 2
Run Code Online (Sandbox Code Playgroud)

我想实现这种行为:

First Request - with counter 1
Second Request - with counter 2
Third Request - with counter 3
...
N Request - with counter n
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

用户数量: 线程数量: 1 加速周期: 1 循环计数: 2

计数器 起始值:1 增量:1 最大值:2

我该怎么做 ?我想我应该以某种方式引入循环控制器?

java counter jmeter performance-testing

5
推荐指数
1
解决办法
2万
查看次数

Chrome Devtools 中没有链接到 React 组件的源代码

我使用create-react-app 16 。["react": "^16.8.4", "react-scripts": "^2.1.8"] \n我阅读了Ben Schwarz使用Chrome 开发工具分析 React 性能的博客:\n https://building.calibreapp.com/debugging-react-performance-with-react-16-and-chrome-devtools-c90698a522ad \n他建议使用source-maps导出你的 JS 。\n当他进行表演时跟踪,然后单击“用户计时”部分中的给定反应组件,特定组件信息显示在“自下而上”部分中,并在右侧带有**指向源代码**的蓝色链接。当我单击 React 组件时,此链接不会显示。当我单击“评估脚本”等组件时,右侧会显示蓝色链接。

\n\n

源映射不应该在开发中与create-react-app 16一起“开箱即用”吗?\n我只想在开发中使用Chrome 开发工具进行源映射。源映射在 Chrome 浏览器中激活。我错过了什么?\n提前谢谢

\n\n

PS:由于我还没有获得 10 点声望点,所以我\xc2\xb4m 不打算使用屏幕截图,这在这种情况下让事情变得不太容易。不过,我希望我能够充分解释我的问题。

\n

performance-testing google-chrome-devtools source-maps reactjs create-react-app

5
推荐指数
1
解决办法
5539
查看次数

XCTest 不测量 CPU 和内存

我有这个性能测试来检查滚动期间的内存使用情况。

func testMemotyUsage() {
    let app = XCUIApplication()
    let measureOptions = XCTMeasureOptions()
    measureOptions.invocationOptions = [.manuallyStop]

    measure(
      metrics: [XCTMemoryMetric(application: app)],
      options: measureOptions
    ) {
      app.buttons["Listing Page"].tap()

      swipeUp()

      stopMeasuring()

      tapBack()
    }
  }

func tapBack() {
    app.navigationBars.buttons.element(boundBy: 0).tap()
  }

func swipeUp() {
    collectionView.swipeUp(velocity: .fast)
  }

func swipeDown() {
    collectionView.swipeDown(velocity: .fast)
  }

var collectionView: XCUIElement {
    app.collectionViews["collectionViewId"]
  }
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,它根本不显示任何指标。

在此输入图像描述

我尝试更新 XCTMemoryMetric(application: app)-> 到XCTMemoryMetric()

在这种情况下,它至少显示了一些结果,但结果不正确,因为正如下面的屏幕截图所示,该应用程序消耗了大约 130 MB 的内存,但测试仅显示 9 KB。顺便说一句,实际内存消耗约为 130-150 MB,因为集合视图中有很多图像。

在此输入图像描述 在此输入图像描述

我猜测它没有显示正确的结果,因为它app没有作为参数传递。虽然当我通过时app,它根本没有显示任何结果

当我编写测试来检查 CPU 使用情况时,会发生同样的问题XCTCPUMetric …

iphone performance-testing ios xctest

5
推荐指数
0
解决办法
447
查看次数

错误的单线程内存带宽基准

为了测量主存储器的带宽,我提出了以下方法。

代码(针对英特尔编译器)

#include <omp.h>

#include <iostream> // std::cout
#include <limits> // std::numeric_limits
#include <cstdlib> // std::free
#include <unistd.h> // sysconf
#include <stdlib.h> // posix_memalign
#include <random> // std::mt19937


int main()
{
    // test-parameters
    const auto size = std::size_t{150 * 1024 * 1024} / sizeof(double);
    const auto experiment_count = std::size_t{500};
    
    //+/////////////////
    // access a data-point 'on a whim'
    //+/////////////////
    
    // warm-up
    for (auto counter = std::size_t{}; counter < experiment_count / 2; ++counter)
    {
        // garbage data allocation and memory page loading …
Run Code Online (Sandbox Code Playgroud)

c++ benchmarking assembly performance-testing memory-bandwidth

5
推荐指数
1
解决办法
268
查看次数