假设我们有一个非常大的字符串$str,我们需要将一小部分字符串(假设整个字符串,但没有前3个字节)传递给函数.使用substr的方法:
consumer_function(substr($str, 3));
看起来效率似乎不高,因为substr似乎在返回结果之前将字符从初始字符串复制到新字符串中.有没有办法我们可以将该字符串的大部分传递给函数而无需过多的复制?我们无法更改该功能的代码.
解决方法:
我不认为这里有问题.你猜测存在问题,你没有理由认为存在问题.
“看起来效率不高”不是问题.如果你测量它并发现它很慢,那你就有问题了.然后,在代码上使用类似于XDebug的分析器,看看是否可以找到代码的哪些部分很慢.
如果你没有问题,那么你无法解决它,并猜测可能看起来可能有点慢的东西并不意味着你有问题.
优化俱乐部的规则:
>优化俱乐部的第一条规则是,你没有优化.
>
优化俱乐部的第二条规则是,你没有优化
测量.
>如果您的应用程序运行速度快于底层应用程序
传输协议,优化结束了.
>一次一个因素.
>没有marketroids,没有marketroid时间表.
>测试将持续很长时间
因为它必须.
>如果这是您在优化俱乐部的第一个晚上,那么
必须写一个测试用例.