3

我在大学中将 Google App Engine 应用程序作为课堂项目。现在我需要对其进行优化以将其用于商业用途。

如今,代码非常慢。它只有几个模型,每个模型都有很多属性。在重写模型代码之前,我需要知道如果我增加模型的数量,我的应用程序是否会更快,即增加解耦。直到什么时候我应该考虑将模型划分为其他模型?

另一个问题,如果解耦对性能有积极影响,模型中的属性数量是否与从数据存储中获取它的时间成正比?

4

1 回答 1

7

如今,代码非常慢。它只有几个模型,每个模型都有很多属性。

获取/放置大物体

由于数据存储 API 只能放置或获取一个对象(而不是单个字段),因此每次您为数据存储获取一个对象时,它都会获取其所有字段,无论您是否打算在此时使用它们。当我们将对象写回数据存储时,这种效果会更强,即使您更改对象中的单个字段,它也必须写入所有内容。(写入成本高于读取)

在我进一步说之前:模型的扩散应该遵循你的读写模式。

为了实用并举个例子,假设我正在为博客上的帖子建模,每个帖子都有 a title、 adate和 a body(我们理所当然地假设它们比其他字段大得多)。在简单的对象建模中,我将这三个字段放在一个类BlogPost中,但是每次我只想阅读整个对象时都会受到惩罚titles(比如简单地显示帖子列表并构建帖子的链接) ,或者只是为了更新dates.

class BlogPost {
String title; String body; long date; }

因此,可以做的是创建一个Body可以容纳的类body,并在其中保留对它的引用(键)BlogPost

class BlogPost {
String title;
Key<Body> body;
long date;
}

class Body {
String body;
}

轻量级实现高效的跨侧序列化

BlogPost如果我决定将其序列化并通过网络发送它,例如将其发送到 Web 浏览器(用于 JavaScript 中),例如使用 GWT,这也会使该类更加轻量级。

增加 Google App Engine 上的模型数量会影响性能吗?

尼克约翰逊的回答:

不,添加其他模型不会影响性能。

于 2010-09-07T02:28:47.423 回答