这是一个PHP问题,与WP没有任何关系,但因为它被升级了。。。。
TL;Dr版本-编译器在这种微优化方面比您做得好得多,甚至尝试都没有意义。
让我们看看编译器将如何处理您的问题代码
// is this less efficient
$meta = get_post_meta($post->ID,\'meta\');
$permalink = get_permalink($post->ID);
//then this?
$post_ID = $post->ID;
$meta = get_post_meta($post_ID,\'meta\');
$permalink = get_permalink($post_ID);
在第一节中,编译器可以看到您使用
$post->ID
两次,无需对
$post
对象,它将只计算一次该值,并在两个调用中使用它。
第二部分基本上是编译器自己完成的,但由于它有更多的文本,因此解析速度较慢,因此总执行时间较长
但是呢
foo1(site_url());
foo2();
foo3(site_url());
// vs
$site_url = site_url();
foo1($site_url);
foo2();
foo3($site_url);
在这里,编译器不能假定
site_url()
在每次使用中都是相同的,因此无法进行优化,第二个版本可能会更快。
但是如果在接下来的过程中,您决定不需要对foo3进行调用,并且删除了该行,该怎么办?我们再次回到这样一种情况,即您编写的代码与编译器本身所做的完全相同,但会使解析速度变慢
你真的能确定foo2()不会被更改,从而修改site_url()
? 使用优化的代码,它将创建一个bug。
这些都是不成熟的/早期的优化,您应该避免这样做,因为它们通常对站点的性能影响很小。
相关法典中的建议为BS。我不会讨论核心本身是如何优化wordpress中选项的使用的,因此这篇文章声称
$a = 5;
快于
$a = foo();
function foo() {
return 5;
}
这是真的,但这种差异通常不值得永远失去通过插件操纵这些值的能力,以及从管理员那里管理这些值的能力。