我比较了这两段代码:
测试1:
$time = microtime(true);
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
for($i=1;$i<=1000;$i++){
$result = $memcached->get('test');
}
echo (microtime(true) - $time)*1000;
结果时间:50.509929656982
<小时/> 测试2:
$time = microtime(true);
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
for($i=1;$i<=1000;$i++){
$result = 'just me';
}
echo (microtime(true) - $time)*1000;
结果时间:0.3209114074707
memcached应该花这么长时间吗?
答案 0 :(得分:2)
你在那里做了很多令人困惑的数学。我认为你的问题根本不清楚。
在将原始答案乘以1,000之后,您似乎得到了50.509929656982ms。所以我要把它再增加到你原来的答案~50,510μs。现在,这是1,000个请求,所以平均请求返回~50μs。
现在,如果您真的想要抓取1,000个项目,那么您可以在一个多项目请求中使用它,这将大大减少每个项目的平均时间。
如果您正在询问是否有时间形成并传输网络请求并获得网络响应,解析它并返回它的速度应该比紧密循环中的NOOP分配慢,是的。是的。
如果你问50μs是快还是慢......那真的取决于你。
答案 1 :(得分:0)
在典型的memcached设置中,我预计几乎每个操作都会在1ms或更短的时间内完成。我建议检查一下你的网络延迟是什么,然后分析客户端,看看客户花了多少时间实际处理操作。如果你可以排除那些缓慢的问题,那么你可能会遇到某种服务器问题。