-1

我比较了这两段代码:

测试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 应该花这么长时间吗?

4

2 回答 2

2

你在那里做了很多令人困惑的数学运算。我认为你的问题根本不清楚。

将原始答案乘以 1,000 后,您似乎得到了 50.509929656982 毫秒。所以我要把它乘以你原来的答案,大约 50,510µs。现在,这是针对 1,000 个请求的,所以平均请求在大约 50 微秒内返回。

现在,如果您真的想要获取 1,000 个项目,您将在一个 multiget 请求中获取它,这将大大减少每个项目的平均时间。

如果您询问形成和传输网络请求并获得网络响应的时间,解析它并返回它预计会比紧密循环中的 NOOP 分配慢,是的。

如果您要问 50µs 是快还是慢……这完全取决于您。

于 2013-06-21T02:53:21.610 回答
0

在典型的 memcached 设置中,我希望几乎每个操作都能在 1 毫秒或更短的时间内完成。我建议检查您的网络延迟是多少,然后分析客户端以查看客户端实际处理操作花费了多少时间。如果您可以排除那些速度较慢的情况,那么您可能会遇到某种服务器端问题。

于 2013-06-20T18:56:21.337 回答