有人可以告诉我如何使用apache bench工具(ab)加载测试我的网站的过程吗?
我想知道以下内容:
该网站每分钟可处理多少人?
请引导我完成我应该运行的命令来解决这个问题.
我尝试了每个教程,他们很困惑.
我正在尝试优化将数据插入MySQL的代码的一部分.我应该链接INSERT来制作一个巨大的多行INSERT还是更快的多个单独的INSERT?
我与实验MATLAB OOP,因为一开始我模仿我的C++的记录器类,我把我所有的字符串辅助函数在String类,以为这将是巨大的,能够做的事情一样a + b,a == b,a.find( b )而不是strcat( a b ),strcmp( a, b ),检索的第一元件strfind( a, b ),等
问题:减速
我把上面的东西用上,并立即注意到一个急剧减速.我做错了(这当然有可能,因为我有相当有限的MATLAB经验),还是MATLAB的OOP只是引入了很多开销?
我的测试用例
这是我为字符串做的简单测试,基本上只是附加一个字符串并再次删除附加部分:
classdef String < handle
....
properties
stringobj = '';
end
function o = plus( o, b )
o.stringobj = [ o.stringobj b ];
end
function n = Length( o )
n = length( o.stringobj );
end
function o = SetLength( o, n ) …Run Code Online (Sandbox Code Playgroud) 当使用相同的代码时,只需更改编译器(从C编译器到C ++编译器)将更改分配的内存量。我不太确定为什么会这样,并且想进一步了解。到目前为止,我得到的最好的答复是“可能是I / O流”,它的描述性不是很强,这使我对C ++的“不用付钱,不用付钱”感到好奇。
我正在使用分别为7.0.1-8和8.3.0-6的Clang和GCC编译器。我的系统在最新的Debian 10(Buster)上运行。基准通过Valgrind Massif完成。
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所使用的代码不会更改,但是无论我是以C还是C ++进行编译,它都会更改Valgrind基准测试的结果。但是,这些值在编译器之间保持一致。该程序的运行时分配(峰值)如下:
为了进行编译,我使用以下命令:
clang -O3 -o c-clang ./main.c
gcc -O3 -o c-gcc ./main.c
Run Code Online (Sandbox Code Playgroud)
clang++ -O3 -o cpp-clang ./main.cpp
g++ -O3 -o cpp-gcc ./main.cpp
Run Code Online (Sandbox Code Playgroud)
对于Valgrind,我运行valgrind --tool=massif --massif-out-file=m_compiler_lang ./compiler-lang每种编译器和语言,然后ms_print显示峰。
我在这里做错什么了吗?
我怎么叫clock()的C++?
例如,我想测试线性搜索在数组中查找给定元素所花费的时间.
我想知道对PHP脚本进行基准测试的最佳方法是什么.无论是cron作业,还是网页或Web服务都无关紧要.
我知道我可以使用microtime但是它真的给了我PHP脚本的实时时间吗?
我想在PHP中测试和基准测试不同的函数,它们做同样的事情.例如,preg_matchvs strpos或domdocumentvs preg_match或preg_replace vs str_replace`
网页示例:
<?php
// login.php
$start_time = microtime(TRUE);
session_start();
// do all my logic etc...
$end_time = microtime(TRUE);
echo $end_time - $start_time;
Run Code Online (Sandbox Code Playgroud)
这将输出:0.0146126717(一直变化 - 但这是我得到的最后一个).这意味着执行PHP脚本需要0.015左右.
有没有更好的办法?
我必须在几秒钟内计算C++代码片段的执行时间.它必须在Windows或Unix机器上运行.
我使用以下代码代码来执行此操作.(之前导入)
clock_t startTime = clock();
// some code here
// to compute its execution duration in runtime
cout << double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
Run Code Online (Sandbox Code Playgroud)
但是对于小输入或短语句,例如a = a + 1,我得到"0秒"的结果.我认为它必须是0.0000001秒或类似的东西.
我记得System.nanoTime()在Java中,在这种情况下工作得很好.但是我无法从clock()C++的功能中获得相同的功能.
你有解决方案吗?
正如我们从2010年的计算机语言基准游戏中看到的那样:
考虑到Go编译器生成用于执行的本机代码,这怎么可能呢?
Go的不成熟的编译器?或者Go语言存在一些内在问题?
编辑:
大多数答案否认Go语言的内在缓慢,声称问题存在于不成熟的编译器中.
因此,我已经做了一些自己的测试来计算Fibonacci数:迭代算法在Go(freebsd,6g)中运行,same速度与C相同(使用O3选项).沉闷的递归运行在Go中2 times比在C中慢(使用-O3选项;使用-O0 - 相同).但我没有看到基准游戏中的10倍跌幅.
我想编写一个广泛使用BLAS和LAPACK线性代数功能的程序.由于性能是一个问题,我做了一些基准测试,并想知道,如果我采取的方法是合法的.
可以说,我有三位参赛者,他们希望用简单的矩阵矩阵乘法来测试他们的表现.参赛者是:
dot.我为不同的维度实现了矩阵 - 矩阵乘法i.i为5的增量和matricies运行5-500 m1和m2设置了这样的:
m1 = numpy.random.rand(i,i).astype(numpy.float32)
m2 = numpy.random.rand(i,i).astype(numpy.float32)
Run Code Online (Sandbox Code Playgroud)
使用的代码如下所示:
tNumpy = timeit.Timer("numpy.dot(m1, m2)", "import numpy; from __main__ import m1, m2")
rNumpy.append((i, tNumpy.repeat(20, 1)))
Run Code Online (Sandbox Code Playgroud)
有了这个功能
_blaslib = ctypes.cdll.LoadLibrary("libblas.so")
def Mul(m1, m2, i, r):
no_trans = c_char("n")
n = c_int(i)
one = c_float(1.0)
zero = c_float(0.0)
_blaslib.sgemm_(byref(no_trans), byref(no_trans), byref(n), byref(n), byref(n),
byref(one), m1.ctypes.data_as(ctypes.c_void_p), byref(n),
m2.ctypes.data_as(ctypes.c_void_p), byref(n), byref(zero),
r.ctypes.data_as(ctypes.c_void_p), byref(n))
Run Code Online (Sandbox Code Playgroud)
测试代码如下所示:
r = …Run Code Online (Sandbox Code Playgroud) 想象一下以下情况:
1,000个客户端连接到显示"Somestuff"集合内容的Meteor页面.
"Somestuff"是一个收藏1,000件物品的系列.
有人在"Somestuff"集合中插入一个新项目
会发生什么:
Meteor.Collection客户端上的所有内容都将更新,即插入转发给所有客户端(这意味着向1,000个客户端发送一条插入消息)服务器确定哪个客户端需要更新的CPU成本是多少?
是否准确只将插入的值转发给客户端,而不是整个列表?
这在现实生活中如何运作?是否有任何这种规模的基准或实验?