gpt4 book ai didi

ruby-on-rails - 哪个更快?渲染部分或使用 if 语句?

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:17 24 4
gpt4 key购买 nike

我有一个正在呈现的页面,根据查看者的不同,它看起来会略有不同。我的两个选择是 1) 使用一些 ifs 来仅显示相关信息和 2) 根据用户身份从我的 Controller 呈现两个不同的 View 。

为了保持干燥,我不想只呈现两个完全独立的页面。相反,我更希望我呈现的每个页面都引用一些公共(public)部分。

例如:

选项 1

view.slim

h1 Notifications
- if current_user.student.id == params[:id]
= link_to 'Edit', ...
- @notifications.each do |note|
# some stuff
h1 Activity
- if current_user.student.id == params[:id]
= link_to 'Edit', ...
- @activities.each do |note|
# some stuff
#etc...

选项 2

current_user_view.slim

= render 'notifications_header
= link_to 'Edit', ...
= render 'notifications'

= render 'activities_header
= link_to 'Edit', ...
= render 'activities'

other_user_view.slim

= render 'notifications_header
= render 'notifications'

= render 'activities_header
= render 'activities'

_notifications.slim

- @notifications.each do |note|
# some stuff

哪种方法更有效?

基准

以下是我对以下各项所做的一些基准测试:

_render.slim

- 1000.times do
= render 'foo'

_foo.slim

| Hello

_if_clause.slim

- 1000.times do
- if current_user.student.id == params[:id]
| Hello

结果如下:

benchmarks

所以看起来渲染局部非常慢。

想法?

rails 4.1.5 ruby 2.1.2

编辑 1:忘记添加 | _if_clause.slim

中的 Hello

最佳答案

您的基准测试并未比较相同的功能。 _render 是用一个字符串渲染 1000 个部分,_if_clause 是只做 if 比较。你应该比较例如一个带有内联通知处理的模板呈现和一个在部分中执行通知处理的模板。

但即使部分渲染应该慢得多,另一件需要考虑的事情是,这有关系吗?根据您的整体性能需求,如果代码更易于理解,牺牲几毫秒的查看时间可能是值得的。

关于ruby-on-rails - 哪个更快?渲染部分或使用 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com