小编Rob*_*obl的帖子

预先加载 ActiveRecord 中的自定义连接

我有一张有很多预订的餐馆的桌子。现在我想查询所有餐馆,如果他们有 2 人的预订,它应该预加载这些关联。如果没有 2 的预订,它仍应返回餐厅,但关联为空。

为此,我尝试了以下查询:

Restaurant.eager_load(:reservations).where("number_of_people = ?", 2)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为它会丢弃所有有预订但都不是 2 人的餐厅。

所以我想做的是将该条件移动到连接条件中。就像是:

Restaurant.joins('LEFT OUTER JOIN \"reservations\" ON \"reservations\".\"restaurant_id\" = \"restaurants\".\"id\" AND \"reservations\".\"number_of_people\" = ?', 2)
Run Code Online (Sandbox Code Playgroud)

这将给出我需要的结果,但是这不是预加载“保留”关联而是导致 N+1 问题。

似乎eager_load 不接受自定义查询。我找到了这些线程:https : //github.com/rails/rails/issues/12270JOIN ON ... AND 在 ActiveRecord 中急切加载关联时的条件,但没有提供解决方案。

activerecord ruby-on-rails eager-loading

5
推荐指数
1
解决办法
2198
查看次数

Spotify 中 CSS 旋转的高 CPU 使用率

我需要在我们的 Spotify 应用程序中使用轮换。为此,我使用以下 CSS:

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
    @-webkit-keyframes rotate {
      from {
        -webkit-transform: rotate(0deg);
      }

      to {
        -webkit-transform: rotate(360deg);
      }
    }

    #entity {
      background-color: #000;
      width: 200px;
      height: 200px;
      -webkit-animation: rotate 3s infinite linear;
    }
  </style>
</head>
<body>
  <div id="entity"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在 Chrome (26.0.1410.43) 中,CPU 使用率没有大的变化(~3%)。但是在 Spotify 0.8.8.459.g4430eae7 中,我的 CPU 使用率一直在 50% 到 100% 之间。除了这段代码之外,Spotify 的原生负载抖动器也会发生同样的情况。我的电脑是 MacBook Pro 2.5 GHz Intel Core i5,8 GB 1600 Mhz DDR3 主内存,Mac OS 10.8.1。如何以更少的 CPU 使用率实现这种轮换?

css performance spotify css-animations

4
推荐指数
1
解决办法
1237
查看次数