有人问过哪个更快的strpos或preg_match,但我很感兴趣知道哪个使用最少的内存和CPU资源。
我想查看5场比赛中的一条线:
if (strpos($key, 'matchA') !== false || strpos($key, 'matchB') !== false || strpos($key, 'matchC') !== false || strpos($key, 'matchD') !== false || strpos($key, 'matchE') !== false)
if (preg_match("~(matchA|matchB|matchC|matchD|matchE)~i",$key, $match))
使用服务器上的最小压力来实现此目的的最佳方法是什么..
由于
答案 0 :(得分:1)
Simba's comment是推荐KCachegrind进行应用程序分析的最佳答案。您可以在this answer中看到有关衡量效果的更多信息。
对于这个关于内存的特定示例的问题,我使用PHP的memory_get_peak_usage
L1 = List((a,1), (b,2), (c,3), (d,4))
L2 = List((a,b), (b,c), (a,d))
是否更好
L3 = List((1,2), (2,3), (1,4))
峰值记忆:501624
preg_match
峰值记忆:504624
这对我来说似乎很合理,因为你正在进行4次<?php
$keys = ['matchA','matchB','matchC','matchD','matchE'];
foreach ($keys as $key)
preg_match("~(matchA|matchB|matchC|matchD|matchE)~i",$key);
echo 'Peak Memory: '.memory_get_peak_usage();
函数调用。