如何在单页面应用程序中测量客户端性能

时间:2014-04-06 06:57:13

标签: javascript performance rendering performance-testing

我们开发了一个基于Sencha Ext.JS框架的复杂单页面应用程序。 有很多"页面"在应用程序中动态更改而不刷新浏览器的URL。所有用户的交互和内容更改都是动态创建和销毁的。

我们现在想要测量客户端稳定性和性能。测试应侧重于客户端行为和响应能力。我们不需要测试服务器端响应时间 - 测试期间响应时间相同。

我看到的所有工具通常都是处理XHR响应时间,通常基于每个URL的加载时间,这与我们的案例无关 - 因为相同的URL正在继续并且随着时间的推移而工作。

有关这种测试的良好实践和工具的任何建议吗?

2 个答案:

答案 0 :(得分:2)

如果您认为AJAX监控和页面加载时间对您没有帮助,那么 我可以建议你可以使用事务监控。它可以通过测量两个状态或两个页面之间的时间来完成。

使用#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #define ARRAY_SIZE 64 typedef struct { char arr[ARRAY_SIZE]; int length; } Word; typedef struct{ int Tab[ARRAY_SIZE]; int length; } ArrInt; typedef struct { ArrInt states; Word symbol; int initState; } Sym; int main(int argc, char **argv) { FILE *f; char buf[BUFSIZ]; char *p; Sym var; memset(&var, 0, sizeof(var)); if (argc < 2) { return -1; } f = fopen(argv[1], "r"); if (!f) { printf("fopen failed, errno = %d\n", errno); return errno; } /* parse int */ p = fgets(buf, sizeof(buf), f); if (!p) return ferror(f); while (p) { var.states.Tab[var.states.length++] = strtol(p, &p, 10); if (*p == '\n') break; if (*p++ != '|') { fprintf(stderr, "Bad format"); return -1; } } /* parse char */ p = fgets(buf, sizeof(buf), f); if (!p) return 1; while (p) { var.symbol.arr[var.symbol.length++] = *p++; if (*p == '\n') break; if (*p++ != '|') { fprintf(stderr, "Bad format"); return -1; } } /* parse char */ p = fgets(buf, sizeof(buf), f); if (!p) return 1; var.initState = atoi(p); return 0; }

进行本地测试
console.time

使用 console.time('page_name'); // Anything goes here console.timeEnd('page_name');

performance.now

使用Atatus服务

如果您正在寻找服务,可以尝试使用https://www.atatus.com/来帮助您实时衡量交易。

在atatus中,您可以通过

衡量交易或状态
 var start = window.performance.now();
 ...
 var end = window.performance.now();
 var time = end - start;

答案 1 :(得分:1)

您可以使用像Selenium这样的工具来自动化客户端行为并测量响应时间。