我在 Debian 7 x64 上运行节点 v0.12.7,我想在具有 4GB 内存的 16 核虚拟专用服务器上对其性能进行基准测试。
我正在运行以下简约代码:
// server.js
var http = require('http');
http.createServer(function (request, response) {
res.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World');
}).listen(80,"0.0.0.0");
Run Code Online (Sandbox Code Playgroud)
我在另一个终端中使用此命令启动它):
node server.js
Run Code Online (Sandbox Code Playgroud)
此时节点正在一个核心上运行。然后我使用 ab 通过以下命令测试其性能:
ab -n 10000 -c 100 -k http://127.0.0.1/
Run Code Online (Sandbox Code Playgroud)
...并得到这些结果:
...
Requests per second: 3925.81 [#/sec] (mean)
...
Percentage of the requests served within a certain time (ms)
50% 35
...
Run Code Online (Sandbox Code Playgroud)
我想知道你们中是否有人做过类似的测试,并且您是否:
我必须提到的是,在具有 15 个核心的集群模式下使用 pm2 运行它使我达到每秒 4500 个请求,这让我认为在某个地方还有另一个我错过的瓶颈。
感谢您对此主题的任何想法。保罗
我正在使用 CUDA 制作应用程序原型。我一直在针对 CPU 进行基准测试,并注意到一些可变的运行时间。我决定从命令行循环运行我的应用程序,这样我就可以收集一些更好的统计数据。我运行该应用程序 50 次并记录结果。我非常惊讶地发现内核运行时间随着启动次数的增加而增加。

这是一个片段,您可以看到正在计时的代码部分:
int nblocks = (int)ceil((float)n / (float)NUM_THREADS);
gpuErrchk(cudaEventRecord(start, 0));
gpuperfkernel << <nblocks, NUM_THREADS >> >(dmetadata, ddatax, ddatay);
gpuErrchk(cudaPeekAtLastError());
gpuErrchk(cudaDeviceSynchronize());
gpuErrchk(cudaEventRecord(stop, 0));
gpuErrchk(cudaEventSynchronize(stop));
gpuErrchk(cudaEventElapsedTime(&milliseconds, start, stop));
printf("GPU kernel took %f milliseconds.\n", milliseconds);
gpuelapsed += milliseconds;
Run Code Online (Sandbox Code Playgroud)
我经常使用 CUDA,但以前从未见过这种行为。想知道是否有人注意到这一点?我的平台是Windows 10、CUDA 7.5、MSI笔记本、GeForce 970m。
因为我使用的是笔记本电脑,所以我认为这可能是与电源相关的设置或类似的设置,但我已将所有内容设置为高性能并禁用了屏幕保护程序。
我正在尝试在 4 个虚拟机上运行扩展 Yahoo Benchmark。每次我尝试运行“STORM_TEST”时都会收到以下错误。我尝试配置“redis.conf”但仍然遇到相同的错误。我在下面显示了错误和我的“redis.conf”文件。
错误:
Caused by: java.lang.Exception: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting …Run Code Online (Sandbox Code Playgroud) 我正在尝试衡量特定方法的性能。当直接调用该方法时,我运行基准测试得很好,但是当该方法使用带有自定义执行器的完整未来时,一切都崩溃了。我已经实现了使用可完成的未来的方法,以便在该方法花费太长时间时强制超时。
@Benchmark
@BenchmarkMode(Mode.SingleShotTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Threads(value = 5)
@Warmup(iterations = 20)
@Measurement(iterations = 50, timeUnit = TimeUnit.MILLISECONDS)
public String very_big_query(TestState testState) throws Exception {
return testState.transpiler.process(testState.veryBigQuery);
}
Run Code Online (Sandbox Code Playgroud)
@State(Scope.Thread)
public static class TestState {
String veryBigQuery;
Transpiler transpiler;
@Setup(Level.Trial)
public void doSetupTrial() throws Exception {
veryBigQuery = "(";
for(int i = 0; i < 99; i++) {
veryBigQuery += String.format("java_%s OR ", i);
}
veryBigQuery += "java_100) AND (";
for(int i = 100; i < 199; i++) {
veryBigQuery += String.format("java_%s OR …Run Code Online (Sandbox Code Playgroud) 假设我有一个软件,并且想要使用黑盒方法研究其行为。我有一个 3.0GHz CPU,有 2 个插槽和 4 个核心。如您所知,为了找出每秒指令数 (IPS),我们必须使用以下公式:
IPS = sockets*(cores/sockets)*clock*(instructions/cycle)
Run Code Online (Sandbox Code Playgroud)
首先,我想找到我的特定算法每个周期的指令数。然后我意识到使用块盒方法几乎不可能计算它,我需要对算法进行深入分析。
但现在,我有两个问题:无论我的机器上运行什么类型的软件及其CPU使用率,有没有办法计算每秒发送到CPU的指令数(每秒百万条指令(MIPS))?是否有可能找到指令集的类型(添加、比较、输入、跳转等)?
任何脚本或工具推荐都将受到赞赏(任何语言)。
所以,我想看看我的代码中的函数需要多长时间才能运行。(实时)。最初,我有这个:
clock_t begin = clock();
my_function();
clock_t end = clock();
double time_spent = (double)(end - begin);
Run Code Online (Sandbox Code Playgroud)
但显然,这种方法存在一些问题。
那么,获取函数运行时间的正确方法是什么?CPU 时间真的是正确的方法吗?我可以测量多精确?我在想纳秒级?
我正在玩 Go 中的基准测试,我有一个简单的函数,只休眠 5 纳秒,但是当我运行基准测试时,它显示298.1 ns/op. 我很好奇这是为什么。难道不应该吗5 ns/op?
去版本:
go version go1.19 linux/amd64
代码:
package andrei
import (
"testing"
"time"
)
func Hi() {
time.Sleep(5 * time.Nanosecond)
}
func BenchmarkHi(b *testing.B) {
for i := 0; i < b.N; i++ {
Hi()
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
$ go test -run none -bench . -benchmem ./andrei
goos: linux
goarch: amd64
pkg: andrei/andrei
cpu: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
BenchmarkHi-8 3861392 298.1 ns/op 0 B/op 0 allocs/op …Run Code Online (Sandbox Code Playgroud) 我一直想知道Java SE 6中吹捧的性能改进 - 它是在编译器还是运行时?换句话说,由JDK 6编译的Java 5应用程序是否会在JSE 5下看到改进运行(表明改进的编译器优化)?JDK 5编译的Java 5应用程序是否会在JSE 6下看到改进运行(表明改进的运行时优化)?
我注意到,在完全相同的代码库下,JDK 6下的编译几乎是JDK 5下的两倍.我希望至少有一些额外的时间花在编译器优化上,希望能够带来更高性能的JAR和WAR.Sun的JDK信息并没有真正详细说明他们所做的性能改进 - 我认为它有点来自A栏,有点来自B栏,但我想知道哪个是更大的影响力.有谁知道在JDK 6和JDK 5上做过的任何基准测试?
有人可以向我解释每个SunSpider子测试实际检查的内容,并给出真实等效的重要性和用途吗?哪种结果(即时间)被认为是现代系统可接受的?
到目前为止,我发现的唯一信息是每个小节的通用信息,在Coding Horror.
3d 纯JavaScript计算,可用于进行3d渲染,但不进行渲染.这最终主要是击中浮点数学和数组访问.
访问 数组,对象属性和变量访问.
bitops 按位运算,这些可用于各种事物,包括游戏,数学计算和各种编码/解码.它也是JavaScript中唯一一种以整数而非浮点形式完成的数学运算.
controlflow 控制流构造(循环,递归,条件).现在它主要涵盖递归,因为其他测试很好地涵盖了其他测试.
crypto Real加密代码,主要包括按位运算和字符串运算.
date JavaScript的"日期"对象的性能.
数学 各种数学类型的计算.
regexp 正则表达式.非常不言自明.
string 字符串处理,包括生成巨型"tagcloud"的代码,提取压缩的JS代码等.
但是每个小节的个别测试呢?
例如,"访问"子部分有4个测试(binary-trees, fannkuch, nbody, nsieve).在使用JavaScript的真实Web应用程序中,每个计算什么以及为什么/何时应该是重要的?
摘要
当我使用Perl的Benchmark实用程序执行一个非常简单的程序时.我得到的值不是(显示为)毫秒或纳秒.返回的基准数据对我没用,因为我不知道如何解释它.
例:
use Benchmark;
my $start = Benchmark->new;
print "foo!";
my $end = Benchmark->new;
my $diff = timediff($end, $start);
print timestr($diff);
Run Code Online (Sandbox Code Playgroud)
返回: foo! 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
不同的字段意味着什么:Wallclock秒,Usr,Sys,CPU?它们可以外推得到毫秒值吗?现在,对于我的基准测试,我需要的只是一次执行的真实世界时间,而不需要考虑基准测试的一些更深奥的方面.