跳到内容
新问题

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

改进获取块模板性能 #4097

已关闭
想要合并16提交到
已关闭

改进获取块模板性能 #4097个

想要合并16提交到

对话

奥安德雷格尔
复制链接
成员

@安大略省的 奥安德雷格尔 评论2023年2月17日

Trac票https://core.trac.wordpress.org/ticket/57756

什么

该PR提高了块模板分辨率的性能。

为什么?

它为块主题提供了性能改进。此更改不应影响没有块模板的主题,因为它们提前保释.

根据性能CI作业:

  • 家庭经典主题
公制(ms) 本公关 底座 改进
wpBefore模板 17.02 19.47 +12.58%
wpTemplate(wp模板) 41.06 44.40 +7.52%
wpTotal(总重量) 57.92 64.23 +9.82%
  • 主块主题
公制(ms) 本公关 底座 改善%
wpBefore模板 23.34 24.42 +4.42%
wpTemplate(wp模板) 44.27 55.24 +19.85%
wpTotal(总重量) 67.63 79.56 +14.99%

怎么

这个获取块模板该函数负责查找与给定搜索匹配的块模板。该函数提供了一个查询参数,用于查找相关的用户模板(数据库)和主题模板(文件目录)。查询参数包括模板的段塞、模板部件的区域等数据。

我发现获取块模板检索和处理主题提供的所有块模板,至筛选出不匹配的之后。如果过滤掉不匹配的函数,则此函数的性能会更好之前处理它们,因此它只计算要使用的数据。

以下配置文件显示了此修改的影响:

之前 之后
形象 形象
  • XDebug分析器测量的时间:55ms(之前)vs 27ms(之后)。
  • 次数_构建块模板结果文件称为:22(之前)vs 5(之后)。

如何测试

  • 启动捆绑环境。
  • 设置.env(英语)通过应用以下修补程序进行生产:
diff—git a/.env b/.env索引63a8169f64.9b1d52ac50 100644---a/.环境
+++b/.环境
@@-54,10+54,10@@LOCAL_DB_TYPE=mysql本地_DB_VERSION=5.7#要添加到`wp-config.php`的调试设置。-LOCAL_WP_DEBUG=真
-LOCAL_WP_DEBUG_LOG=真
-LOCAL_WP_DEBUG_DISPLAY=真
-LOCAL_SCRIPT_DEBUG=真
+LOCAL_WP_DEBUG=错误
+LOCAL_WP_DEBUG_LOG=假
+LOCAL_WP_DEBUG_DISPLAY=假
+LOCAL_SCRIPT_DEBUG=错误LOCAL_WP_ENVIRONMENT_TYPE=本地#运行e2e测试时使用的URL。
  • 对主页进行100次测试:seq 100 | xargs-Iz curl-o/dev/null-H'缓存控制:no-Cache'-s-w“%{time_starttransfer}\n”http://localhost:8889|xclip-选择剪贴板.
  • 将结果复制到电子表格,如这个来衡量变化。

笔记

我将此PR提交给了core,而不是Gutenberg,因为它修改了不再存在的函数:

  • _获取块模板文件:不再存在。
  • 获取块模板:对应的古腾堡get_block_templates仍然存在,但一旦WordPress 6.2发布,它就会被删除。当这个PR登陆时,它不会出现在古腾堡(WordPress 6.3周期)。

@安大略省的 奥安德雷格尔将此提取请求标记为草稿 2023年2月17日15:24
if($应包含在内){
$query_result[]=$模板;
}
$query_result[]=_build_block_template_result_from_file($template_file,$template_type);
复制链接
成员 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

这是此PR的关键更改:而不是构建模板对象对于所有项目并对其进行过滤之后,我们过滤之前这一步,所以我们必须构建更少的项目。我们可以这样做,因为用于筛选项目的所有数据在前面的步骤中都已可用。

复制链接
成员 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

通过查看_构建块模板结果文件函数被调用:

之前(22次) 之后(5次)
形象 形象

@安大略省的 奥安德雷格尔将此拉入请求标记为已准备好进行审阅 2023年2月17日17:45
@安大略省的
复制链接
成员 作者

好的,现在可以查看了:)cc@你知道riad @奥卡姆 @创造性编码器 @卡洛曼根据#1267

@安大略省的
复制链接
成员 作者

奥安德雷格尔 评论2023年3月10日

这个性能作业报告以下内容(复制/粘贴到单个表中,否则很难比较结果):

  • 家庭经典主题
公制(ms) 本公关 底座 改进
wpBefore模板 24.32 25.33 +3.98%
wp模板 50.67 56.97 +11.05%
wpTotal(总重量) 75.28 80.32 +6.25%
  • 主块主题
公制(ms) 本公关 底座 改进
wpBefore模板 28.33 31.80 +10.91%
wpTemplate(wp模板) 53.37 71.39 +25.24%
wpTotal(总重量) 81.34 102.74 +20.82%

src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
@你知道riad
复制链接
贡献者

无法谈论性能影响,但我觉得这很好。感谢您的更新@安大略省的

复制链接
成员

@穆克什班查尔27 穆克什班查尔27 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

谢谢@安大略省的用于更新。我又进行了一轮复习,留下了一些复习和问题。

在我的测试中,我发现:

  • 这些更改只影响块主题,因此它们没有提高经典主题的性能。经典主题的性能比较是由于GHA差异。
  • 对于区块主题(带帖子的全新设置):
    • 公关变更后_构建块模板结果文件函数在主页上调用了7次,在帖子页面上调用了5次,相比之下,在更改之前,该函数在主页和帖子页面分别调用了40次和22次。

这是对区块主题的良好改进。

src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
src/wp-includes/block-template-utils.php 显示已解决 隐藏已解决
src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
src/wp-includes/block-template-utils.php 过时的 显示已解决 隐藏已解决
复制链接
成员

@穆克什班查尔27 穆克什班查尔27 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

谢谢@安大略省的用于更改。你能分享更新后的绩效数字吗?

只返回与我们正在查找的slug匹配的主题模板,而不是全部退回。
只返回与我们要查找的区域匹配的模板块,而不是全部退回。
仅返回与给定postTypes匹配的主题模板,而不是全部退回。
仅返回没有用户定义的等效项的项,而不是全部退回。
合著者:Jonny Harris<spacedmonkey@git.wordpress.org>
合著人:Mukesh Panchal<mukeshpanchal27@users.noreply.github.com>
合著人:Mukesh Panchal<mukeshpanchal27@users.noreply.github.com>
合著人:Mukesh Panchal<mukeshpanchal27@users.noreply.github.com>
@安大略省的
复制链接
成员 作者

谢谢@安大略省的用于更改。你能分享最新的业绩数字吗?

我已经重新考虑过了大旅行箱准备提交,并使用perf CI作业报告的编号更新问题描述。

@费利萨尔茨
复制链接
成员

@安大略省的你是如何从perf-CI作业中获得数字的?我在问,因为他们只是在竞选大旅行箱据我所知承诺。您自己触发它并查看工作流运行日志了吗?经典主题看到了显著的改进,这一事实让我觉得可能是不正确的,因为这里的更改只会像你说的那样影响块主题。

复制链接
成员

@费利萨尔茨 费利萨尔茨 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

@安大略省的这里工作出色!公平地说,这是我迄今为止看到的最令人印象深刻的一次公关,对业绩产生了重大影响。🥳

基于我刚刚运行的基准,此PR将块主题的总体加载时间性能提高了约15%。

很抱歉延迟审查,但可以肯定的是,这将是WordPress 6.3性能的一次重大胜利,几乎与WP 6.1到6.2的所有改进都一样好。

复制链接
成员

@穆克什班查尔27 穆克什班查尔27 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

谢谢@安大略省的,干得好。

@安大略省的
复制链接
成员 作者

@安大略省的你是如何从perf-CI作业中获得数字的?我之所以这么问,是因为据我所知,他们实际上只运行主干提交。您自己触发它并查看工作流运行日志了吗?

🤔

哦。我看了看为此PR运行的性能CI作业。我的理解是,“打印性能测试结果”下的数字是此PR,“打印基线测试结果”下面的数字是比较的基准。我应该如何看待它们@费利萨尔茨?

我第一次运行自己的数字时,它们与CI的工作在同一范围内,所以我没有再费心运行自己的数据。如果我看错了,我很高兴。

经典主题看到了显著的改进,这一事实让我觉得可能是不正确的,因为这里的更改只会像你说的那样影响块主题。

是的,我也不明白。我推测这与测试的可变性有关。

@费利萨尔茨
复制链接
成员

@安大略省的

哦。我看了看为此PR运行的性能CI作业。我的理解是,“打印性能测试结果”下的数字是此PR,“打印基线测试结果”下面的数字是比较的基准。我应该如何看待它们@费利萨尔茨?

啊,这可能是一个误解,有点令人困惑。“基线测试结果”不是的当前统计数据大旅行箱而是重新运行获取指标大旅行箱处于最初测量的相同基线状态(我相信我们已经设置为WP 6.1.1的最后一个提交散列)。所以这不是最新的状态大旅行箱.

不过,查看打印的“性能测试结果”是一个好主意。您需要比较的是中最后一次提交的类似数据大旅行箱那是在你的分店里。

当然,所有这一切都不应该是如何实现的,但公平地说,目前阶段的绩效CI工作流还不打算用于评估PR。在待办事项列表中,分支中的最后一次提交与PR注释中自动报告的PR之间的差异很高:)

@安大略省的
复制链接
成员 作者

@安大略省的
复制链接
成员 作者

这导致了子主题的问题,请参阅上的说明WordPress/gutenberg#53138我正在调查此事。

@安大略省的
复制链接
成员 作者

固定于#4940

继续;
}

$is_not_custom=false===数组搜索(
复制链接
成员 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

此逻辑检查来自用户的模板(此处定义为“自定义”)和以前插入的模板(例如,如果子模板已经定义,则检查是否未添加父模板)。这没有正确移植,导致了一个问题。

免费注册 在GitHub上加入此对话.已经有帐户了吗?登录以发表评论
标签
还没有
项目
还没有
6名参与者