请求库如何与PyCurl性能明智地进行比较?
我的理解是Requests是urllib的python包装器,而PyCurl是libcurl的python包装器,它是本机的,所以PyCurl应该会获得更好的性能,但不确定多少.
我找不到任何比较基准.
当我运行apache bench时,我得到的结果如下:
Command: abs.exe -v 3 -n 10 -c 1 https://mysite
Connection Times (ms)
min mean[+/-sd] median max
Connect: 203 213 8.1 219 219
Processing: 78 177 88.1 172 359
Waiting: 78 169 84.6 156 344
Total: 281 389 86.7 391 564
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到连接,处理和等待的定义.这些数字是什么意思?
我知道我可以花时间来评估一个功能,可以使用时间函数/宏在屏幕/标准输出上打印出来.
时间宏返回已计算函数的值,这使得内联使用它非常棒.但是我想在特定情况下自动测量运行时.
是否有一个函数可以返回某个库中的已用时间来帮助进行此基准测试?
好吧,我到处搜索,似乎无法在网上找到详细的资源来解释Apache的ab服务器基准测试工具的结果.我用我认为完全不同的参数进行了几次测试,但看到了非常相似的结果(我很难想到这意味着我的网站正在完美缩放!).如果有一个详细的资源,有人可以指点我,如何理解这个测试的结果,或者如果有人想在这里创建一个,我认为这对我和其他人都非常有用.
我需要一次读取一个文件,我正在使用该read()方法BufferedReader.*
我发现这read()比约慢10倍readLine().这是预期的吗?或者我做错了什么?
这是Java 7的基准测试.输入测试文件大约有500万行和2.54亿个字符(~242 MB)**:
该read()方法需要大约7000毫秒来读取所有字符:
@Test
public void testRead() throws IOException, UnindexableFastaFileException{
BufferedReader fa= new BufferedReader(new FileReader(new File("chr1.fa")));
long t0= System.currentTimeMillis();
int c;
while( (c = fa.read()) != -1 ){
//
}
long t1= System.currentTimeMillis();
System.err.println(t1-t0); // ~ 7000 ms
}
Run Code Online (Sandbox Code Playgroud)
该readLine()方法只需约700毫秒:
@Test
public void testReadLine() throws IOException{
BufferedReader fa= new BufferedReader(new FileReader(new File("chr1.fa")));
String line;
long t0= System.currentTimeMillis();
while( (line = fa.readLine()) != null ){
// …Run Code Online (Sandbox Code Playgroud) 在阅读了以下论文后,https://people.freebsd.org/~lstewart/articles/cpumemory.pdf("每个程序员应该了解内存的内容")我想尝试一下作者的测试,即测量效果TLB的最终执行时间.
我正在研究嵌入Cortex-A9的三星Galaxy S3.
根据文件:
我们在L1中有两个用于指令和数据缓存的微TLB(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/Chddiifa.html)
主要TLB位于L2(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/Chddiifa.html)
Data micro TLB有32个条目(指令微TLB有32或64个条目)
我写了一个小程序,用N个条目分配一个结构数组.每个条目的大小为== 32个字节,因此它适合缓存行.我执行几次读取访问,并测量执行时间.
typedef struct {
int elmt; // sizeof(int) == 4 bytes
char padding[28]; // 4 + 28 = 32B == cache line size
}entry;
volatile entry ** entries = NULL;
//Allocate memory and init to 0
entries = calloc(NB_ENTRIES, sizeof(entry *));
if(entries == NULL) perror("calloc failed"); exit(1);
for(i = 0; i < NB_ENTRIES; i++)
{
entries[i] = mmap(NULL, …Run Code Online (Sandbox Code Playgroud) 以下Python 3.x整数乘法平均在1.66s和1.77s之间:
import time
start_time = time.time()
num = 0
for x in range(0, 10000000):
# num += 2 * (x * x)
num += 2 * x * x
print("--- %s seconds ---" % (time.time() - start_time))
Run Code Online (Sandbox Code Playgroud)
如果我更换2 * x * x用2 *(x * x),它需要之间2.04和2.25.怎么会?
另一方面,它与Java相反:2 * (x * x)Java更快.Java测试链接:为什么2*(i*i)比Java中的2*i*i更快?
我运行了每个版本的程序10次,这里是结果.
2 * x * x | 2 * (x * x)
---------------------------------------
1.7717654705047607 | 2.0789272785186768
1.735931396484375 | …Run Code Online (Sandbox Code Playgroud) python performance benchmarking python-3.x integer-arithmetic
你有没有必要证明选择使用.NET而不是基于性能的Java?
对于可以执行以下操作的典型高容量事务处理系统,
我的方法是在Java中为JVM和C#for .NET CLR编写基准测试,在不同负载水平下对上述操作进行基准测试并比较结果.
除了语言和平台偏好之外,我有兴趣了解如何在Java VM和.NET CLR之间进行结论性的性能比较?
是否存在任何全面且受尊重的基准?
我开始在JMeter中编写一些基本测试,并且惊讶于测量结果与Apache ab的测量结果非常不同.
我有一个千兆局域网连接运行Nginx的Intel i7服务器和运行JMeter或ab的i5测试机.最初,我只是测试开箱即用的Nginx主页响应率.
ab -c 1 -n 100 http://testserver.local/
Run Code Online (Sandbox Code Playgroud)
给
Document Path: /
Document Length: 151 bytes
Concurrency Level: 1
Time taken for tests: 0.078 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 38400 bytes
HTML transferred: 15100 bytes
Requests per second: 1280.77 [#/sec] (mean)
Time per request: 0.781 [ms] (mean)
Time per request: 0.781 [ms] (mean, across all concurrent requests)
Transfer rate: 480.29 [Kbytes/sec] received
Run Code Online (Sandbox Code Playgroud)
该结果始终可重复,+/ - 百分之几.
在JMeter中,我有一个1用户的100循环线程组,其中包含:
只有100个样本,每次运行时都会产生非常不一致的结果.但最令人吃惊的事实是报告吞吐量低至每秒40个请求(而不是1280).最高记录率为1030,这仅在我增加到10,000个样本时才实现. …
这是一个受欢迎的问题,它正在得到更多的关注.为了阻止错误信息的传播,请首先阅读以下段落和随附的文章:
速度不应成为决定是使用HTTPS还是HTTP的因素.如果您的站点的任何部分需要 HTTPS (登录,注册,信用卡等),您绝对需要所有这些的HTTPS.
我被认为在https下运行我的整个电子商务网站.我决定运行一个粗略的基准来测量156KB图像的下载时间,通过https vs http,因为我已经读过https负担加密过程带来的额外开销.
当从空缓存下载图像时,使用Firefox的Firebug简单地通过将"等待"和"接收"时间(所有其他时间均为0)转录到Excel中的Excel来执行基准测试.
我的结果出人意料:
http: 11.233 seconds
Waiting Receiving Total
1.56 0.88 2.44
1.55 0.101 1.651
1.53 0.9 2.43
1.71 0.172 1.882
1.9 0.93 2.83
https: 9.936 seconds
Waiting Receiving Total
0.867 1.59 2.457
0.4 1.67 2.07
0.277 1.5 1.777
0.536 1.29 1.826
0.256 1.55 1.806
Run Code Online (Sandbox Code Playgroud)
[明显]基准观察:
任何人都可以解释为什么会这样吗?
你认为文件(html,css,javascript)会给出不同的结果吗?
有没有人有更好的基准测试下载方法?
[删除测试图像]
附加信息:
编辑:以下1px GIF(35字节)的基准:
http: 2.666 seconds
Waiting …Run Code Online (Sandbox Code Playgroud) benchmarking ×10
performance ×4
apache ×2
java ×2
python ×2
.net ×1
apachebench ×1
arm ×1
c ×1
clojure ×1
cortex-a ×1
http ×1
https ×1
jmeter ×1
jvm ×1
pycurl ×1
python-3.x ×1
scalability ×1
ssl ×1